struts2将U​​RL传递给Action

时间:2012-09-03 09:40:12

标签: java struts2

我在wildcard mappings上阅读了struts手册,并决定自己测试一些示例。我的行动指向:

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

这允许我去/person之后的任何地方,并在我能理解的情况下查看view.jsp。所以我现在要做的就是转到/person/jack/black然后我希望getPerson类中的PersonActionBean方法获取网址字段jackblack并按名称和姓氏在我的数据库中搜索,然后填充将在view.jsp上使用的对象

我关心的不是搜索功能,而是围绕从方法getPerson检索URL中的字段。如何从网址中检索jackblack并在我的getPerson方法中使用它?

我正在使用 struts 2.1.8.1

2 个答案:

答案 0 :(得分: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
}
  

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

<强>参考

查看Advanced Wildcard

答案 1 :(得分:-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">

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