You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Uttam Phalnikar (JIRA)" <ji...@apache.org> on 2010/02/01 18:54:18 UTC
[jira] Created: (WICKET-2711) Wicket 1.4.5 + Websphere Portal
Express 6.1: query string parameters are not forwarded through
WicketPortlet
Wicket 1.4.5 + Websphere Portal Express 6.1: query string parameters are not forwarded through WicketPortlet
------------------------------------------------------------------------------------------------------------
Key: WICKET-2711
URL: https://issues.apache.org/jira/browse/WICKET-2711
Project: Wicket
Issue Type: Bug
Components: wicket-portlet
Affects Versions: 1.4.5
Environment: Windows XP SP3
jdk1.5.0_15
Wicket 1.4.5
Spring 2.5.2
Websphere Portal Express 6.1
Reporter: Uttam Phalnikar
In my application, I am using portlet init parameter "viewPage" to define view page URL with query string parameter. For e.g.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<portlet>
<description>My Test</description>
<portlet-name>Test</portlet-name>
<display-name>Test</display-name>
<portlet-class>org.apache.wicket.protocol.http.portlet.WicketPortlet</portlet-class>
<init-param>
<name>wicketFilterPath</name>
<value>/test</value>
</init-param>
<init-param>
<name>viewPage</name>
<value>/test?portletid=portlet1</value>
</init-param>
<supports>
<mime-type>*/*</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
<title>Test Portlet</title>
<keywords>Wicket</keywords>
</portlet-info>
</portlet>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
In my web.xml, I have filter mapping that maps "/test/*" to WicketFilter. The home page of my application displays appropriate contents on the basis of "portletid".
This setup works fine with JBoss Portal 2.7.2, but with Websphere Portal Express 6.1, my home page never gets the "portletid" parameters.
After investigation, it was realized that org.apache.wicket.protocol.http.portlet.PortletServletRequestWrapper has logic to obtain the querystring from wrapped request, but doesnt override methods getParameterMap / getParameters & getParameter to convert query string into parameters. I am not very sure whether Websphere Portal Server has any setting to do this conversion.
Here is the workaround that I have used
1. Created MyServletWebRequest that extends ServletWebRequest
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public class MyServletWebRequest extends ServletWebRequest {
private Map<String, String[]> paramMap;
public MyServletWebRequest(HttpServletRequest httpServletRequest) {
super(httpServletRequest);
if (httpServletRequest instanceof PortletServletRequestWrapper) {
String qs = this.getQueryString();
if (StringUtil.hasLength(qs)) {
paramMap = new HashMap<String, String[]>();
StringTokenizer tokens = new StringTokenizer(qs, "&");
while (tokens.hasMoreTokens()) {
String tuple = tokens.nextToken();
int index = tuple.indexOf("=");
if (index != -1) {
String key = tuple.substring(0, index);
String value = tuple.substring(index + 1);
paramMap.put(key, new String[] { value });
}
}
} else {
paramMap = Collections.EMPTY_MAP;
}
}
}
@Override
public Map getParameterMap() {
Map<String, String[]> combinedMap =
new HashMap<String, String[]>(super.getParameterMap());
combinedMap.putAll(paramMap);
return combinedMap;
}
@Override
public String getParameter(String key) {
if (paramMap.containsKey(key))
return paramMap.get(key)[0];
return super.getParameter(key);
}
@Override
public String[] getParameters(String key) {
if (paramMap.containsKey(key))
return paramMap.get(key);
return super.getParameters(key);
}
}
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2. Then updated the MyWebApplication class (extends WebApplication) to override newWebRequest method
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@Override
protected WebRequest newWebRequest(HttpServletRequest servletRequest) {
return new MyServletWebRequest(servletRequest);
}
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
That has solved the issue.
I think PortletServletRequestWrapper should override getParameterMap / getParameters & getParameter methods.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (WICKET-2711) Wicket 1.4.5 + Websphere Portal
Express 6.1: query string parameters are not forwarded through
WicketPortlet
Posted by "Ate Douma (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/WICKET-2711?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ate Douma resolved WICKET-2711.
-------------------------------
Resolution: Duplicate
This issue has been reported before, see WICKET-2078 and is a bug in the WebSphere 6.1 container.
IBM seems to have fixed this with Portal-APAR PK89992, see http://www-01.ibm.com/support/docview.wss?rs=180&context=SSEQTP&dc=DB550&uid=swg1PK89992&loc=en_US&cs=UTF-8&lang=en&rss=ct180websphere for more information.
> Wicket 1.4.5 + Websphere Portal Express 6.1: query string parameters are not forwarded through WicketPortlet
> ------------------------------------------------------------------------------------------------------------
>
> Key: WICKET-2711
> URL: https://issues.apache.org/jira/browse/WICKET-2711
> Project: Wicket
> Issue Type: Bug
> Components: wicket-portlet
> Affects Versions: 1.4.5
> Environment: Windows XP SP3
> jdk1.5.0_15
> Wicket 1.4.5
> Spring 2.5.2
> Websphere Portal Express 6.1
> Reporter: Uttam Phalnikar
> Assignee: Ate Douma
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> In my application, I am using portlet init parameter "viewPage" to define view page URL with query string parameter. For e.g.
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> <portlet>
> <description>My Test</description>
> <portlet-name>Test</portlet-name>
> <display-name>Test</display-name>
> <portlet-class>org.apache.wicket.protocol.http.portlet.WicketPortlet</portlet-class>
> <init-param>
> <name>wicketFilterPath</name>
> <value>/test</value>
> </init-param>
> <init-param>
> <name>viewPage</name>
> <value>/test?portletid=portlet1</value>
> </init-param>
> <supports>
> <mime-type>*/*</mime-type>
> <portlet-mode>VIEW</portlet-mode>
> </supports>
> <portlet-info>
> <title>Test Portlet</title>
> <keywords>Wicket</keywords>
> </portlet-info>
> </portlet>
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> In my web.xml, I have filter mapping that maps "/test/*" to WicketFilter. The home page of my application displays appropriate contents on the basis of "portletid".
> This setup works fine with JBoss Portal 2.7.2, but with Websphere Portal Express 6.1, my home page never gets the "portletid" parameters.
> After investigation, it was realized that org.apache.wicket.protocol.http.portlet.PortletServletRequestWrapper has logic to obtain the querystring from wrapped request, but doesnt override methods getParameterMap / getParameters & getParameter to convert query string into parameters. I am not very sure whether Websphere Portal Server has any setting to do this conversion.
> Here is the workaround that I have used
> 1. Created MyServletWebRequest that extends ServletWebRequest
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> public class MyServletWebRequest extends ServletWebRequest {
> private Map<String, String[]> paramMap;
> public MyServletWebRequest(HttpServletRequest httpServletRequest) {
> super(httpServletRequest);
> if (httpServletRequest instanceof PortletServletRequestWrapper) {
> String qs = this.getQueryString();
> if (StringUtil.hasLength(qs)) {
> paramMap = new HashMap<String, String[]>();
> StringTokenizer tokens = new StringTokenizer(qs, "&");
> while (tokens.hasMoreTokens()) {
> String tuple = tokens.nextToken();
> int index = tuple.indexOf("=");
> if (index != -1) {
> String key = tuple.substring(0, index);
> String value = tuple.substring(index + 1);
> paramMap.put(key, new String[] { value });
> }
> }
> } else {
> paramMap = Collections.EMPTY_MAP;
> }
> }
> }
> @Override
> public Map getParameterMap() {
> Map<String, String[]> combinedMap =
> new HashMap<String, String[]>(super.getParameterMap());
> combinedMap.putAll(paramMap);
> return combinedMap;
> }
> @Override
> public String getParameter(String key) {
> if (paramMap.containsKey(key))
> return paramMap.get(key)[0];
> return super.getParameter(key);
> }
> @Override
> public String[] getParameters(String key) {
> if (paramMap.containsKey(key))
> return paramMap.get(key);
> return super.getParameters(key);
> }
> }
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> 2. Then updated the MyWebApplication class (extends WebApplication) to override newWebRequest method
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> @Override
> protected WebRequest newWebRequest(HttpServletRequest servletRequest) {
> return new MyServletWebRequest(servletRequest);
> }
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> That has solved the issue.
> I think PortletServletRequestWrapper should override getParameterMap / getParameters & getParameter methods.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Assigned: (WICKET-2711) Wicket 1.4.5 + Websphere Portal
Express 6.1: query string parameters are not forwarded through
WicketPortlet
Posted by "Igor Vaynberg (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/WICKET-2711?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor Vaynberg reassigned WICKET-2711:
-------------------------------------
Assignee: Ate Douma
> Wicket 1.4.5 + Websphere Portal Express 6.1: query string parameters are not forwarded through WicketPortlet
> ------------------------------------------------------------------------------------------------------------
>
> Key: WICKET-2711
> URL: https://issues.apache.org/jira/browse/WICKET-2711
> Project: Wicket
> Issue Type: Bug
> Components: wicket-portlet
> Affects Versions: 1.4.5
> Environment: Windows XP SP3
> jdk1.5.0_15
> Wicket 1.4.5
> Spring 2.5.2
> Websphere Portal Express 6.1
> Reporter: Uttam Phalnikar
> Assignee: Ate Douma
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> In my application, I am using portlet init parameter "viewPage" to define view page URL with query string parameter. For e.g.
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> <portlet>
> <description>My Test</description>
> <portlet-name>Test</portlet-name>
> <display-name>Test</display-name>
> <portlet-class>org.apache.wicket.protocol.http.portlet.WicketPortlet</portlet-class>
> <init-param>
> <name>wicketFilterPath</name>
> <value>/test</value>
> </init-param>
> <init-param>
> <name>viewPage</name>
> <value>/test?portletid=portlet1</value>
> </init-param>
> <supports>
> <mime-type>*/*</mime-type>
> <portlet-mode>VIEW</portlet-mode>
> </supports>
> <portlet-info>
> <title>Test Portlet</title>
> <keywords>Wicket</keywords>
> </portlet-info>
> </portlet>
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> In my web.xml, I have filter mapping that maps "/test/*" to WicketFilter. The home page of my application displays appropriate contents on the basis of "portletid".
> This setup works fine with JBoss Portal 2.7.2, but with Websphere Portal Express 6.1, my home page never gets the "portletid" parameters.
> After investigation, it was realized that org.apache.wicket.protocol.http.portlet.PortletServletRequestWrapper has logic to obtain the querystring from wrapped request, but doesnt override methods getParameterMap / getParameters & getParameter to convert query string into parameters. I am not very sure whether Websphere Portal Server has any setting to do this conversion.
> Here is the workaround that I have used
> 1. Created MyServletWebRequest that extends ServletWebRequest
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> public class MyServletWebRequest extends ServletWebRequest {
> private Map<String, String[]> paramMap;
> public MyServletWebRequest(HttpServletRequest httpServletRequest) {
> super(httpServletRequest);
> if (httpServletRequest instanceof PortletServletRequestWrapper) {
> String qs = this.getQueryString();
> if (StringUtil.hasLength(qs)) {
> paramMap = new HashMap<String, String[]>();
> StringTokenizer tokens = new StringTokenizer(qs, "&");
> while (tokens.hasMoreTokens()) {
> String tuple = tokens.nextToken();
> int index = tuple.indexOf("=");
> if (index != -1) {
> String key = tuple.substring(0, index);
> String value = tuple.substring(index + 1);
> paramMap.put(key, new String[] { value });
> }
> }
> } else {
> paramMap = Collections.EMPTY_MAP;
> }
> }
> }
> @Override
> public Map getParameterMap() {
> Map<String, String[]> combinedMap =
> new HashMap<String, String[]>(super.getParameterMap());
> combinedMap.putAll(paramMap);
> return combinedMap;
> }
> @Override
> public String getParameter(String key) {
> if (paramMap.containsKey(key))
> return paramMap.get(key)[0];
> return super.getParameter(key);
> }
> @Override
> public String[] getParameters(String key) {
> if (paramMap.containsKey(key))
> return paramMap.get(key);
> return super.getParameters(key);
> }
> }
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> 2. Then updated the MyWebApplication class (extends WebApplication) to override newWebRequest method
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> @Override
> protected WebRequest newWebRequest(HttpServletRequest servletRequest) {
> return new MyServletWebRequest(servletRequest);
> }
> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> That has solved the issue.
> I think PortletServletRequestWrapper should override getParameterMap / getParameters & getParameter methods.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.