struts.convention.result.path не работает в Struts2
Моя текущая структура проекта выглядит следующим образом
WebContent
WEB-INF
View
TestPage.jsp
other JSP pages...
Мое задание - поместить все страницы JSP в папку WEB-INF и выполнить все относительные изменения в проекте.
WebContent
WEB-INF
View
TestPage.jsp
other JSP pages...
Поэтому я должен обновить весь тег результата в struts.xml
<result name="success">/View/TestPage.jsp</result>
в
<result name="success">/WEB_INF/View/TestPage.jsp</result>
После поиска в Интернете я обнаружил плагин соглашения о плагин-структурах, чтобы достичь этого, но он следует соглашению об именах.
Могу ли я переопределить конфигурацию плагина соглашения Struts (которая не будет следовать соглашению об именах)? Я тоже пробовал, но это не отражает. мой struts.xml
является
<struts>
<constant name="struts.devMoade" value="true" />
<constant name="struts.convention.result.path" value="/WEB-INF/View/" />
<package name="test" extends="struts-default" namespace="/">
<action name="hello1" class="testAction.Hello1Action">
<result name="success">/TestPage.jsp</result>
</action>
</package>
</struts>
Когда я бегу
localhost:8080/project-name/hello1
Он отображает ошибку 404. Но если я изменю результат в struts.xml как
<result name="success">/WEB-INF/View/TestPage.jsp</result>
Работает нормально.
Я не хочу вносить изменения во все теги результатов. Как я могу добиться этого, делая изменения в одном месте?
1 ответ
Плагин соглашения использует другого поставщика конфигурации, и эта константа работает только с конфигурацией, созданной соглашением.
<constant name="struts.convention.result.path" value="/WEB-INF/View/" />
Если вы хотите переопределить конфигурацию соглашения, вы должны использовать аннотации.
package testAction;
@ParentPackage("json-default")
@Namespace("/")
@Action(value="hello1", results=@Result(name = "success", location="TestPage.jsp"))
public class Hello1Action extends ActionSupport {
}