我在wildcard mappings上阅读了struts手册,并决定自己测试一些示例。我的行动指向:
<action name="**" method="getPerson" class="PersonActionBean">
<result>/person/view.jsp</result>
</action>
这允许我去/person
之后的任何地方,并在我能理解的情况下查看view.jsp
。所以我现在要做的就是转到/person/jack/black
然后我希望getPerson
类中的PersonActionBean
方法获取网址字段jack
和black
并按名称和姓氏在我的数据库中搜索,然后填充将在view.jsp
上使用的对象
我关心的不是搜索功能,而是围绕从方法getPerson
检索URL中的字段。如何从网址中检索jack
和black
并在我的getPerson
方法中使用它?
我正在使用 struts 2.1.8.1
答案 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 = jack
,param2 = 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>
<强>参考强>
答案 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">
我相信这会对你有帮助......