You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Nils-Helge Garli (JIRA)" <ji...@apache.org> on 2008/11/23 10:27:36 UTC

[jira] Commented: (WW-2846) s:url Tag with parameters does not work or results in ClassCastException

    [ https://issues.apache.org/struts/browse/WW-2846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=45006#action_45006 ] 

Nils-Helge Garli commented on WW-2846:
--------------------------------------

Could you try to build trunk and see if this still is an issue?

> s:url Tag with parameters does not work or results in ClassCastException
> ------------------------------------------------------------------------
>
>                 Key: WW-2846
>                 URL: https://issues.apache.org/struts/browse/WW-2846
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - Portlet, Plugin - Tags
>    Affects Versions: 2.0.11.2
>         Environment: Pluto 1.1.6, Java5
>            Reporter: Torsten Krah
>            Assignee: Nils-Helge Garli
>         Attachments: Param.diff, PortletUrlHelper.diff
>
>
> Using Example 1 from s:url Tag
> http://struts.apache.org/2.0.11.2/struts2-core/apidocs/org/apache/struts2/components/URL.html
> does not work in an PortletEnvironment. Only the url is generated.
> Debugging to PortletUrlHelper the params map is empty.
>  <s:url value="editGadget.action">
>      <s:param name="id" value="%{selected}" />
>  </s:url>
> does not work. The params map is empty
>  <s:url value="editGadget.action">
>      <s:param name="id" value="abc" />
>  </s:url>
> does not work. The params map is empty.
>  <s:url value="editGadget.action">
>      <s:param name="id" value="40" />
>  </s:url>
> does not work. The param is in the Map, but its not a String, its an Integer - which results in a ClassCastException at:
>   String key = (String)it.next();
>   String val = (String)params.get(key);
> Portlet Spec mentions to use Servlet for resource streaming and other things you can't do with portlets.
> I need to generate servlet URLs containing parameters - but it seems i can't create them with struts.
> Using "includeParams=ALL" (which you may use to get extraparams included), does result in
> [Ljava.lang.String; cannot be cast to java.lang.String
> because PortletUrlHelper gots a method called: ensureParamsAreStringArrays which is called when constructing the surrounding form ...
> which does convert the entire map to hold string arrays - but than buildResourceUrl must fail everytime.
> Using get and %{ognlvaluexpr} it does work nearly, only the CCE is making things worse.
> The fault is 
>                 Object value = findValue(this.value);
>                 component.addParameter(name, value);
> in the param Tag. findValue does return actually an Integer instance which is put to the parameter Map.
> This should be converted to String before inserting it to the map.
> Besides this, using All the above things still apply.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.