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"/>
Другие вопросы по тегам