Struts 2: нужно написать путь к jsp в результате в struts.xml
Я занимаюсь разработкой веб-приложения на Struts 2. При написании struts.xml я должен указать путь к jsp, на который я перенаправляю тег результата. Как и в моем случае, все jsp находятся в /WEB-INF/jsp/ .
Поэтому я должен написать
<result name="success">/WEB-INF/jsp/xyz.jsp</result>
Нет ли способа сделать этот путь по умолчанию, установив какую-либо константу или что-то еще, и мне просто нужно написать имя JSP.
Кроме того, я погуглил aroud и заметил, что никто не упоминает путь, который в моем случае выдает ошибку ресурса not found
2 ответа
Самое простое - вернуть пользовательский объект результата вместо String:
public Result runAction() {
ServletDispatcherResult result = new ServletDispatcherResult();
result.setLocation("input-form.jsp");
return result;
}
Источник: https://struts.apache.org/docs/result-configuration.html (в самом низу страницы)
Тогда ясно, что вы можете создать служебную функцию, которая создает ваш результат, вы можете расширить ActionSupport, поместив этот служебный метод там.
Как уже упоминалось, конвенция-плагин - действительно хорошая идея.
Существуют и другие более сложные методы, такие как не использование результатов и создание UnknownResultHandler, но тогда вы будете разрабатывать свою собственную систему соглашений. Не делай этого.
Если вы используете плагин Соглашения (рекомендуется) и, следовательно, неявные Соглашения и / или явные Аннотации, путь результата по умолчанию WEB-INF/content
, но можно изменить в struts.xml (или struts.properties) с помощью struts.convention.result.path
свойство:
<constant name="struts.convention.result.path" value="WEB-INF/jsp"/>