我遇到struts2注释的奇怪问题,让我先详细说明
@Results({
@Result(name = "input", location = "main.jsp"),
@Result(name = "list", location = "list.jsp")
})
public class MainAction extends ActionSupport {
private PortalUser user;
@Autowired
private PortalUserService portalUserService;
public String execute() throws Exception {
return INPUT;
}
@Action("addUser")
public String addUser() throws Exception {
portalUserService.addUser(user);
return listUser();
}
@Action("listUser")
@SkipValidation
public String listUser() throws Exception {
List theUserList = portalUserService.getPortalUserList(null);
ServletActionContext.getRequest().setAttribute("userList", theUserList);
return "list";
}
@Action("modifyUser")
public String modifyUser() throws Exception {
List theUserList = portalUserService.getPortalUserList(null);
ServletActionContext.getRequest().setAttribute("userList", theUserList);
return "list";
}
public void validate() {
if (user != null && StringUtils.isBlank(user.getUserName()))
addFieldError("accountBean.userName", "User name is required.");
System.out.println("validate @@@@@");
}
public PortalUser getUser() {
return user;
}
public void setUser(PortalUser user) {
this.user = user;
}
}
这是struts2动作类,我正确配置它并输入url
http://domain/listUser
它会列出所有用户http://domain/modifyUser
它可以修改用户使用爆炸的类文件在tomcat中一切顺利
但是当我使用war文件构建并将其部署到tomcat webapp文件夹时,页面报告 没有动作名称listUser。
两种方案之间的区别在于我编译的爆炸类文件和归档类文件,并将操作和其他类文件包装到其中。
我对这种现象感到困惑。
所以任何建议和意见都将非常感谢!
答案 0 :(得分:0)
我按照以下方法进行实验并得出结论:使用struts2注释,动作类不能移动到jar文件中,它必须位于WEB-INF / classes中
我承认struts2约定会扫描特定包中的action类,所以我只留下WEB-INF / classes /.../ action文件夹中的action类,jar其他类文件并将其放入WEB-INF / lib,它已经完成了
答案 1 :(得分:0)
默认情况下,插件不会扫描jar或类路径,只能扫描WEB-INF / classes。您可能希望看到该插件的Configuration Reference并查找值 struts.convention.action.includeJars ,它可以让您列出您也想要的广告寻找文件。