В моем проекте у меня есть этот конфиг в struts.xml
<action name="searchTracker" class="searchAction" method="searchTracker">
<result name="success">/jsp/searchTracker.jsp</result>
<result name="error">/jsp/searchTracker.jsp</result>
</action>
А вот мой метод действия в searchAction Action
public String searchTracker(){
this.clearErrorsAndMessages();
List<File> queryResults = fileManager.retrievequeryResults(patchNumBySearch); // patchNumBySearchis input from the page
if(queryResults == null){
this.setTrackers(null);
addActionError("This patch number doesn't exist. Please choose another one !");
return ERROR;
}
List<Tracker> trackers = commonUtils.convertToTrackers(queryResults);
this.setTrackers(trackers);
}
return SUCCESS;
}
если я введу неправильный параметр и queryResult
будет возвращен как NULL
, страница searchTracker.jsp
может корректно отображать сообщение об ошибке само по себе, как я хочу, но после этого, я ввожу правильный параметр, оно отображает ошибку непосредственно ниже
"Errors on action com.harris.northstar.dbadesk.action.SearchTrackerAction@9bee3a, returning result name 'input'"
Я только что сравнил журнал отладки в двух разных случаях и обнаружил, что разница только в одной строке
"converter is null for property patchNumBySearch. Mapping size: 0"
если эта строка существует, она войдет в мои действия, если нет - перейдет к ошибке, запрашивающей входной результат. Что означает линия?
и еще не попал в класс действий. Я знаю, что причина в том, что он нарушает некоторый перехватчик проверки по умолчанию и выдает это исключение, но я не могу найти ничего плохого в этом запросе с правильным параметром. Если я вначале введу правильный параметр, он может получить queryResult и без проблем переходит в результат Success. Единственное отличие - это время.
Нужно ли добавлять входной результат в конфигурацию xml? Я встречал какой-то проект раньше, и он имеет только успех и результат ошибки, никакого результата ввода вообще, почему он не работает? Что-то не так с моим struts.xml?
И я не хочу создавать свой собственный перехватчик, отключив перехватчики проверки по умолчанию для стояков
Я только что нашел способ обойти это. просто удалите результат ошибки в файле конфигурации, только сохраните результат успеха и удалите AccionErrors в методе searchAction, чтобы пользователь не получал никаких предупреждений для своего запроса, просто ничего не показывалось на странице, но этот способ является второстепенным вариантом. Я все еще хочу показать сообщение об ошибке, решив эту проблему.