2

我想使用像这样的网址

host/ActionName/123/abc/

而不是像传递查询字符串一样

host/ActionName?parm1=123&parm2=abc

我怎样才能在 Struts 2 中做到这一点?

我做了如下但它不工作,显示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>
4

2 回答 2

2

在 2.1+ 下使用普通的 Struts2 是不可能的。作为一种解决方法,您可以使用UrlRewriter filter执行此操作。从 Struts2 2.1+ 开始,在通配符的帮助下,您可以使用类似host/ActionNmae/param1-123/param2-abcsee this post,但不能使用host/ActionNmae/123/abc/. 不同之处在于,在第二种情况下,没有参数名称。解决方法是在操作名称之后使用参数

@Action(value = "/ActionNmae/*/*", params = {"param1", "{1}", "param2", "{2}"}  
于 2013-01-19T15:36:56.653 回答
1

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

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

于 2013-05-15T18:00:59.277 回答