Aaron Freeman wrote: > We are experiencing a fundamental change in how data is being passed as > a jsp:param between 3.0.22 and 4.0.5. We need to know if this change is > intentional as it has a work-heavy impact on converting our code base > over which currently relies on the behavior of 3.0.x. > > It appears that a call to jsp:include was automatically URL decoding any > strings that were passed in, and that that behavior has changed. > > I have included source to two files that will demonstrate the behavior > change (in case it's not intentional). And here are the results of > running it: >
I've added a bug report for this at http://bugs.caucho.com/view.php?id=3976. I'll need to check, but there's a good chance this change was made to conform to either the JSP or JSTL spec/TCK. -- Scott > ---- on resin-pro-3.0.22 ---- > > URL encoded before pass to jsp:include: > Test%3A+1+%3C+2+and+width%3D%22100%25%22+and+ampersand%3D%26. > > Test: 1 < 2 and width="100ïand ampersand= > Here it is as seen inside of test-process.jsp: > Test: 1 < 2 and width="100%" and ampersand=&. > > > ---- on resin-pro-4.0.5 ---- > > URL encoded before pass to jsp:include: > Test%3A+1+%3C+2+and+width%3D%22100%25%22+and+ampersand%3D%26. > > Test: 1 < 2 and width="100ïand ampersand= > Here it is as seen inside of test-process.jsp: > Test:+1+<+2+and+width="100%"+and+ampersand=&. > > > > <%----- BEGIN test.jsp -----%> > <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> > <%@ taglib uri="http://www.sendthisfile.com/taglib/httputil" > prefix="httputil" %> > > <c:if test="${!empty param.textarea}"> > textarea param exists:<br/> > ${param.textarea}<br/><br/> > > <c:set var="textareaUrlEncodedBefore" > value="${httputil:urlEncode(param.textarea)}"/> > URL encoded before pass to jsp:include:<br/> > ${textareaUrlEncodedBefore}<br/><br/> > </c:if> > > <%-- Set some requestscope variable in test.jsp --%> > <jsp:include page="/test-process.jsp"> > <jsp:param name="textarea" value="${param.textarea}"/> > <jsp:param name="textareaUrlEncoded" value="${textareaUrlEncodedBefore}"/> > </jsp:include> > > <form action="/test.jsp"> > > <textarea name="textarea">${requestScope.processedTextarea}</textarea> > > <input type="submit"></input> > > </form> > > <c:if test="${!empty requestScope.urlEncoded}"> > Here it is as seen inside of test-process.jsp:<br/> > ${requestScope.urlEncoded} > </c:if> > <%----- END test.jsp -----%> > > > <%----- BEGIN test-process.jsp -----%> > <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> > > <c:choose> > > <c:when test="${empty param.textarea}"> > <c:set var="processedTextarea" scope="request">Test: 1 < 2 and > width="100%" and ampersand=&.</c:set> > </c:when> > > <c:otherwise> > <c:set var="processedTextarea" scope="request">${param.textarea}</c:set> > </c:otherwise> > > </c:choose> > > <c:set var="urlEncoded" scope="request">${param.textareaUrlEncoded}</c:set> > <%----- END test-process.jsp -----%> > > > Thanks for your thoughts on this, > > Aaron > > > _______________________________________________ > resin-interest mailing list > [email protected] > http://maillist.caucho.com/mailman/listinfo/resin-interest > > _______________________________________________ resin-interest mailing list [email protected] http://maillist.caucho.com/mailman/listinfo/resin-interest
