我阅读了wildcard mappings上的struts手册并决定自己测试一些例子。我有一个操作指向:
<action name="**" method="getPerson" class="PersonActionBean">
<result>/person/view.jsp</result>
</action>
这使我能够转到 /person
之外的任何地方,并尽可能地查看 view.jsp
。所以我现在想做的是转到 /person/jack/black
然后我想要 PersonActionBean
类中的 getPerson
方法获取URL 字段 jack
和 black
并按姓名在我的数据库中进行搜索,然后填充将在 view.jsp
上使用的对象
我关心的不是搜索功能,而是从方法 getPerson
检索 URL 中的字段。如何从 URL 检索 jack
和 black
并在我的 getPerson
方法中使用它们?
我正在使用 struts 2.1.8.1
最佳答案
方法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>
引用文献
关于java - struts2 将 URL 传递给 Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12245373/