You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Gabriel Gruber <Ga...@workflow.at> on 2008/08/24 17:02:51 UTC
Problems with latest changes in Servlet-Services-Framework
Hi guys,
just wanted to inform you, that latest trunk changes in
ServletServiceFramework broke the ability of the form block to submit
correctly, if ajax is enabled. I traced the issue down to this class:
HttpServletResponseBufferingWrapper
there have been some changes lately in connection with buffering and
forewarding. It seems that those reworks actually broke the correct
functioning of this snippet inside Form.js (which is responsible to give
dojo back the information, that form validation worked correctly):
line 221 and following...
cocoon.sendStatus(200);
var httpResponse =
objectModel.get(org.apache.cocoon.environment.http.HttpEnvironment.HTTP_RESPONSE_OBJECT);
if (httpResponse) {
var text ="";
if (cocoon.request.getParameter("dojo.transport")==
"iframe") {
//MSIE accepts only HTML content when using the
iframe
//dojo transport, so we have to wrap everything
into
//html as demonstrated by
IframeTransport-bu-styling.xsl
httpResponse.setContentType("text/html");
text = "<html><head><title>Browser Update
Data-Island</title></head><body>"
+ "<form id='browser-update'>"
+ "<textarea name='continue'></textarea>"
+ "</form>"
+ "</body></html>";
} else {
httpResponse.setContentType("text/xml");
text = "<?xml version='1.0'?><bu:document
xmlns:bu='" +
org.apache.cocoon.ajax.BrowserUpdateTransformer.BU_NSURI +
"'><bu:continue/></bu:document>";
}
httpResponse.setContentLength(text.length);
httpResponse.writer.print(text);
} else {
// Empty response
cocoon.response.setHeader("Content-Length", "0");
}
....
After switching back to rev. 650170 submission of ajax forms works for me
again. But I suspect there should be some more investigation by grek...
The main difference when comparing the working and broken version of this
class in respect to the issues mentioned above is, that in the older
(working) version outputstream and writer were retrieved from super().
cheers,
Gabriel