[jboss-jira] [JBoss JIRA] Commented: (JBPORTAL-2248) Action URL retained by client
Dan Krieger (JIRA)
jira-events at lists.jboss.org
Thu Dec 4 22:13:36 EST 2008
[ https://jira.jboss.org/jira/browse/JBPORTAL-2248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12441293#action_12441293 ]
Dan Krieger commented on JBPORTAL-2248:
---------------------------------------
Still seems to want to remove the public render parameters during an action.
Got this also:
java.lang.IllegalArgumentException: Array must not be zero length
org.jboss.portal.common.util.ParameterMap$ValueConverter.getInternal(ParameterMap.java:469)
org.jboss.portal.common.util.ParameterMap$ValueConverter.getInternal(ParameterMap.java:443)
org.jboss.portal.common.util.AbstractTypedMap$Converter$4.transform(AbstractTypedMap.java:140)
org.jboss.portal.common.util.AbstractTypedMap.put(AbstractTypedMap.java:242)
org.jboss.portal.common.util.ParameterMap.setValues(ParameterMap.java:282)
org.jboss.portal.core.portlet.PortletRequestEncoder.configure(PortletRequestEncoder.java:208)
org.jboss.portal.core.portlet.PortletRequestEncoder.encodeRender(PortletRequestEncoder.java:169)
org.jboss.portal.core.model.portal.PortalObjectURLFactory.doMapping(PortalObjectURLFactory.java:168)
org.jboss.portal.core.controller.command.mapper.DelegatingURLFactoryService.doMapping(DelegatingURLFactoryService.java:68)
org.jboss.portal.core.controller.ControllerContext.renderURL(ControllerContext.java:171)
org.jboss.portal.core.controller.classic.ClassicResponseHandler.processCommandResponse(ClassicResponseHandler.java:62)
org.jboss.portal.core.controller.handler.ResponseHandlerSelector.processCommandResponse(ResponseHandlerSelector.java:70)
org.jboss.portal.core.controller.Controller.processCommandResponse(Controller.java:315)
org.jboss.portal.core.controller.Controller.processCommand(Controller.java:303)
org.jboss.portal.core.controller.Controller.handle(Controller.java:261)
org.jboss.portal.server.RequestControllerDispatcher.invoke(RequestControllerDispatcher.java:51)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:131)
org.jboss.portal.server.aspects.server.ContentTypeInterceptor.invoke(ContentTypeInterceptor.java:68)
org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115)
org.jboss.portal.core.aspects.server.PortalContextPathInterceptor.invoke(PortalContextPathInterceptor.java:45)
org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115)
org.jboss.portal.core.aspects.server.LocaleInterceptor.invoke(LocaleInterceptor.java:96)
org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115)
org.jboss.portal.core.aspects.server.UserInterceptor.invoke(UserInterceptor.java:193)
org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115)
org.jboss.portal.server.aspects.server.SignOutInterceptor.invoke(SignOutInterceptor.java:98)
org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115)
org.jboss.portal.core.impl.api.user.UserEventBridgeTriggerInterceptor.invoke(UserEventBridgeTriggerInterceptor.java:65)
org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115)
org.jboss.portal.core.aspects.server.IdentityCacheInterceptor.invoke(IdentityCacheInterceptor.java:68)
org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115)
org.jboss.portal.core.aspects.server.TransactionInterceptor.org$jboss$portal$core$aspects$server$TransactionInterceptor$invoke$aop(TransactionInterceptor.java:49)
org.jboss.portal.core.aspects.server.TransactionInterceptor$invoke_N5143606530999904530.invokeNext(TransactionInterceptor$invoke_N5143606530999904530.java)
org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
org.jboss.aspects.tx.TxInterceptor$RequiresNew.invoke(TxInterceptor.java:253)
org.jboss.portal.core.aspects.server.TransactionInterceptor$invoke_N5143606530999904530.invokeNext(TransactionInterceptor$invoke_N5143606530999904530.java)
org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
org.jboss.aspects.tx.TxInterceptor$RequiresNew.invoke(TxInterceptor.java:262)
org.jboss.portal.core.aspects.server.TransactionInterceptor$invoke_N5143606530999904530.invokeNext(TransactionInterceptor$invoke_N5143606530999904530.java)
org.jboss.portal.core.aspects.server.TransactionInterceptor.invoke(TransactionInterceptor.java)
org.jboss.portal.server.ServerInterceptor.invoke(ServerInterceptor.java:38)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115)
org.jboss.portal.server.aspects.LockInterceptor$InternalLock.invoke(LockInterceptor.java:69)
org.jboss.portal.server.aspects.LockInterceptor.invoke(LockInterceptor.java:130)
org.jboss.portal.common.invocation.Invocation.invokeNext(Invocation.java:115)
org.jboss.portal.common.invocation.Invocation.invoke(Invocation.java:157)
org.jboss.portal.server.servlet.PortalServlet.service(PortalServlet.java:252)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
For reference here is my simple block of action code that seems to be causing the trouble:
String field = req.getParameter("field");
if(field != null)
{
String[] fields;
res.removePublicRenderParameter(field);
if((fields = req.getPrivateParameterMap().get(field)) != null)
{
res.setRenderParameter(field, fields);
}
}
It may be that it working previously was a fluke, but essentially its part of a set of portlets for filtering content on a main portlet. The field passed in is a public render parameter (PRP) to be replaced. So if I have PRP a, b, and c set, and my action url is <portleturl>?field=a&a=newvalue&action=1, the action should leave values for b and c alone while setting the value of a to 'newvalue'. But b and c are seemingly removed as well.
That huge error came up when trying to clear a PRP without setting a new one: ?field=a&action=1
My guess is there's trouble around removePublicRenderParameter
I apologize if this doesn't make sense, but hopefully it should help.
> Action URL retained by client
> -----------------------------
>
> Key: JBPORTAL-2248
> URL: https://jira.jboss.org/jira/browse/JBPORTAL-2248
> Project: JBoss Portal
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Portal Core
> Affects Versions: 2.7.0 Final
> Reporter: Dan Krieger
> Assignee: Thomas Heute
> Fix For: 2.7.1 Final
>
>
> When a client navigates to an actionURL, the action is performed and no client-side redirect is sent to remove the actionURL as the active page. This is showing itself as an issue with user's enjoying the use of the refresh button.
> The URL pattern used in 2.6.X wasn't the best because render parameters often could potentially contain huge amounts of data and cause overly long URLs (causing 414 errors). But at least it didn't contain the action URL which now allows a user to redo an action or force a re-POST on a refresh.
> Not sure if this is a bug, intended feature, or how to classify it.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list