繁体   English   中英

在 Struts 2 中使用 UrlRewrite 设置参数变量

[英]Setting parameter variables using UrlRewrite in Struts 2

我将Tuckey UrlRewrite与 Struts2 应用程序结合使用。

我正在尝试转换以下 URL:

/promotions/abcdef-987/dopromotions/detail传递变量id987

我的重写规则如下:

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM