[英]Setting parameter variables using UrlRewrite in Struts 2
我将Tuckey UrlRewrite与 Struts2 应用程序结合使用。
我正在尝试转换以下 URL:
/promotions/abcdef-987
到/dopromotions/detail
传递变量id
为987
。
我的重写规则如下:
<rule>
<from>^/(promoties|promotions)/([0-9a-zA-Z\-_]+)-([0-9]+)$</from>
<set type="parameter" name="id">$3</set>
<to>/dopromotions/detail</to>
</rule>
我的 Struts2 Action 有以下 getter 和 setter:
private Integer id;
public void setId(Integer id){
this.id = id;
}
public Integer getId(Integer id){
return id;
}
但是,变量永远不会被输入。 调试时,我在参数或属性范围内的任何地方都找不到id
。
我试过删除type="parameter"
。 这将id
放在属性范围内,但它不会输入到我的变量Integer id
。
我不熟悉您正在使用的 URL 重写器,但是您可以单独使用 Struts2 实现这种映射。
请参阅有关NamedVariablePatternMatcher
答案。 您需要在 struts.xml 中设置以下常量:
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.patternMatcher" value="namedVariable"/>
然后,将您的操作映射为:
<!-- you could also make /promotions a namespace and the action just "abcdef-{id}" -->
<action name="promotions/abcdef-{id}" class="...">
...
</action>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.