Struts2 аннотации (конвенционный плагин) - PullRequest
1 голос
/ 29 сентября 2011

Я встречаю странную проблему с аннотацией 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.

Разница между этими двумя сценариями заключается в том, что файлы классов с разнесенными файлами и файлами архивов классов я собираю и собираю в них файлы действий и другие файлы классов.

Я был озадачен этим явлением.

Так что любые предложения и советы будут очень благодарны!

Ответы [ 2 ]

0 голосов
/ 16 сентября 2012

По умолчанию плагин не сканирует файлы jar или classpath, а только WEB-INF / classes. Возможно, вы захотите посмотреть плагин Справочник по конфигурации и найти значение struts.convention.action.includeJars , которое позволяет вам перечислить банки, где вы также хотите искать файлы.

0 голосов
/ 30 сентября 2011

Я экспериментирую следующим образом и делаю вывод, что с аннотацией struts2 класс действия не может перемещаться в файлы jar, он должен находиться в ваших WEB-INF / classes

Я признаю, что соглашение struts2 будетсканировать класс действий в определенном пакете, поэтому я оставил только классы действий в папке действия WEB-INF / classes /.../, заархивировал другие файлы классов и поместил его в WEB-INF / lib, все готово

...