0

我阅读了有关通配符映射的 struts 手册,并决定自己测试一些示例。我有一个动作指向:

<action name="**" method="getPerson" class="PersonActionBean">
      <result>/person/view.jsp</result>
</action>

这让我可以去任何过去的地方,尽我所能/person看到它。view.jsp所以我现在要做的是转到/person/jack/black然后我希望类中的getPerson方法PersonActionBean获取 URL 字段jackblack并在我的数据库中按名称和姓氏进行搜索,然后填充一个将用于view.jsp

我关心的不是搜索功能,而是从方法中检索 URL 中的字段getPerson。我将如何从 URL 中检索jack并在我的方法中使用它?blackgetPerson

我正在使用struts 2.1.8.1

4

2 回答 2

2

方法 1 - 使用 struts2-convention 插件

struts.xml

<constant name="struts.patternMatcher" value="namedVariable"/>

PersonAction.java

    import org.apache.struts2.convention.annotation.Namespace;
    ...
    @Namespace{"/persons/{param1}/{param2}");
    public class PersonActionBean exends ActionSupport {
        private String param1;
        private String param2;
        // getter and setter
    }

如果你打电话persons/jack/black,参数应该设置为param1 = jackparam2 = black

方法 2 - 没有 struts2-convention 插件

PersonAction.java

public class PersonActionBean exends ActionSupport {
    private String param1;
    private String param2;
    // getter and setter
}

人.xml

<package name="person" namespace="/person" extends="website">
    <action name="*/*" method="getPerson" class="PersonActionBean">
            <param name="param1">{1}</param>
            <param name="param2">{2}</param>
            <result>/person/view.jsp</result>
    </action>   
</package>

struts.xml

<package name="website" namespace="/" extends="struts-default, json-default">
     ...
    <constant name="struts.enable.SlashesInActionNames" value="true"/>
    <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
     ...
</package>

参考

查看高级通配符

于 2012-09-03T13:08:38.443 回答
-1

使用 <s:Property>标签

你为什么不去寻找财产标签。最好你通过属性标签发送这些名字。

<s:url action="PersonActionBean" var="urlPersonActionBean" >
    <s:param name="name1">no</s:param>
    <s:param name="name2">no</s:param>
</s:url>

<a href="<s:property value="#urlPersonActionBean"/>"  target="content">

我相信这会对你有所帮助......

于 2012-09-03T12:55:46.183 回答