在Struts 2中传递URL中没有查询字符串的参数

时间:2013-01-19 06:19:41

标签: java parameters struts2 url-parameters wildcard-mapping

我喜欢使用host/ActionName/123/abc/之类的网址,而不是传递像host/ActionName?parm1=123&parm2=abc这样的查询字符串。

我如何在Struts2中做到这一点?

我完成如下。但它不起作用,显示500错误代码

<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>

2 个答案:

答案 0 :(得分:2)

在2.1+下使用普通的Struts2是不可能的。作为解决方法,您可以使用UrlRewriter filter执行此操作。从Struts2 2.1+开始,在通配符的帮助下,您可以使用host/ActionNmae/param1-123/param2-abc之类的内容查看this帖子,但不能使用host/ActionNmae/123/abc/。不同之处在于,在第二种情况下,没有参数名称。解决方法是使用Parameters after the action name

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

答案 1 :(得分:1)

您可以使用namedVariableregex模式匹配器。

每种都有自己的优点和缺点,其中大部分都可以解决。