Структура проверки Struts2 требует ввода результатов - PullRequest
2 голосов
/ 07 ноября 2011

В моем проекте с Struts2 я не использую среду валидации, и никакие методы действий не возвращают «вход» в мой класс Action. Вот мой фрагмент конфигурации,

    <action name="searchTracker" class="searchAction" method="searchTracker">
        <result name="success">/jsp/searchTracker.jsp</result>
        <result name="error">/jsp/searchTracker.jsp</result>
        <result name="input">/jsp/searchTracker.jsp</result>
    </action>

Вот класс действий

 public String searchTracker(){

    this.clearErrorsAndMessages();

    List<File> files = fileManager.retrieveFiles(patchNumBySearch);
    if(files == null){
        this.setTrackers(null);
        addActionError("This patch number doesn't exist. Please choose another one !");
        return ERROR;
    } else {
        if (files.size() == 0) {
            addActionError("This patch doesn't include any tracker. Please create tracker or choose another patch");
            return ERROR;
            }
        else {
            List<Tracker> trackers = commonUtils.convertToTrackers(files);
            this.setTrackers(trackers);
        }
    }
        return SUCCESS;
}

Если я удалю результат ввода, он выдаст исключение, как это

     "No result defined for action SearchTrackerAction and result input"

и если я проверю бэкэнд лог, он покажет "2011-11-07 00: 09: 13,841 DEBUG

com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.debug:68 - Errors on action com.harris.northstar.dbadesk.action.SearchTrackerAction@1d07b41, returning result name 'input'"

Почему он вызывает DefaultWorkflowInterceptor и возвращает ввод имени результата?

Если я верну результат ввода в конфигурации, исключение пропадет. Но если вначале в Action произойдет ошибка, она не будет снова успешной, даже если я установлю точку останова, после этого метод не перейдет в searchTracker().

1 Ответ

2 голосов
/ 07 ноября 2011

Это также может быть вызвано ошибкой преобразования типа; не зная больше о том, что вы отправляете, трудно помочь за этим.

Если вы удалите перехватчик «workflow», S2 прекратит проверку на ошибки в действии. Вам также может понадобиться удалить перехватчик преобразования типа, но рабочего процесса должно быть достаточно. Если вы не используете какую-либо проверку, вы также можете удалить этот перехватчик.

...