Passing parameters in URL without query string in Struts 2

≡放荡痞女 提交于 2019-11-26 12:47:43

问题


I Like to use URLs like host/ActionName/123/abc/, instead of passing query string like host/ActionName?parm1=123&parm2=abc.

How can I do that in Struts2?

I done as below. but it is not working, showing 500 error code

<constant name=\"struts.enable.SlashesInActionNames\" value=\"true\"/>
<constant name=\"struts.mapper.alwaysSelectFullNamespace\" value=\"false\"/>

<package name=\"default\" extends=\"struts-default\" namespace=\"/\">
        <action name=\"/action/*\"
    class=\"gov.apiic.serviceRequest.action.ServiceRequest\" method=\"method\" >
    <param name=\"p1\">{1}</param>
    <result name=\"success\">views.jsp</result>
    </action>
</package>

回答1:


It was not possible with plain Struts2 under the 2.1+. As a workaround you can do this with UrlRewriter filter. From Struts2 2.1+ with the help of wildcards you can use something like host/ActionNmae/param1-123/param2-abc see this post, but not like host/ActionNmae/123/abc/. The difference is that in the second case there's no parameter names. The workaround is to use Parameters after the action name.

@Action(value = "/ActionNmae/*/*", params = {"param1", "{1}", "param2", "{2}"}  



回答2:


You can use either the namedVariable or regex pattern matchers.

Each has its own advantages and disadvantages, most of which can be worked around.



来源:https://stackoverflow.com/questions/14411736/passing-parameters-in-url-without-query-string-in-struts-2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!