如何将URL字符串视为参数而不使用“?”动作名称后的字符?
比方说我们有来自数据库的用户名:jr,jack,j等......
我想要的是使用domain.com/user/jr,domain.com/user/jack,domain.com/user/j等查看其个人资料。
有没有办法解决这些问题?
从示例中,jr,jack,j是动态的,是用于查看其个人资料的关键。
答案 0 :(得分:1)
使用 Wildcard mappings 。
操作注释(常规插件)的示例:
struts.xml
<constant name="struts.enable.SlashesInActionNames" value="true" />
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false" />
<constant name="struts.patternMatcher" value="regex" />
@Action(value = "user/{userName}", results = {
@Result(location = "user.jsp")
})
public class UserAction extends ActionSupport implements Preparable {
private String userName; // with getter & setter
public void prepare() {
// getUserByUserName(userName)
}
}
答案 1 :(得分:0)
我认为您正在寻找的是Struts 2 REST插件,因为您正在寻找REST样式的URL。
http://struts.apache.org/2.x/docs/rest-plugin.html
我不记得是否让插件替换了正常的'action'类映射,但我认为它可能。也就是说,我想在它出现之后,你所有的动作都必须按照我链接的信息中指定的惯例进行映射。
祝你好运。