Java Struts2注释(约定插件)

Java Struts2注释(约定插件),java,struts2,annotations,Java,Struts2,Annotations,我在struts2注释中遇到了一个奇怪的问题,让我先详细说明一下 @Results({ @Result(name = "input", location = "main.jsp"), @Result(name = "list", location = "list.jsp") }) public class MainAction extends ActionSupport { private PortalUser user; @Autowired pri

我在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文件构建并将其部署到TomcatWebApp文件夹中时,页面报告 没有操作名称listUser

这两种场景之间的区别是分解类文件和归档类文件,我编译它们并将动作和其他类文件放入其中

我对这种现象感到困惑


因此,任何建议和建议都将不胜感激

我做了如下实验并得出结论,使用struts2注释,action类不能移动到jar文件中,它必须位于WEB-INF/类中


我承认struts2约定将扫描特定包中的action类,因此我只将action类保留在WEB-INF/classes/../action文件夹中,jar其他类文件并将其放入WEB-INF/lib中,默认情况下插件不会扫描jar或类路径,只扫描WEB-INF/classes。您可能希望查看插件的并查找struts.convention.action.includeJars值,该值允许您列出您还希望查找文件的jar

您可以使用检查操作映射