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>

to

<result name="success">/WEB_INF/View/TestPage.jsp</result>

После поиска в Интернете я нашел плагин - плагин соглашения struts для достижения этой цели, но он следует соглашению об именах.

Могу ли я переопределить конфигурацию плагина соглашения 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>

Это работает нормально.

Я не хочу вносить изменения во все теги результатов. Как я могу добиться этого, внося изменения в одном месте?


person Ankit Sharma    schedule 06.02.2015    source источник
comment
Если вы прочитали связанный вопрос, почему у вас указано неправильное местоположение в соответствии с принятым ответом на этот вопрос?   -  person Aleksandr M    schedule 06.02.2015
comment
Я тоже так пробовал, но не работает.   -  person Ankit Sharma    schedule 06.02.2015


Ответы (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 {
}
person Roman C    schedule 07.02.2015
comment
Разве мы не можем использовать его через файл конфигурации - struts.xml? - person Ankit Sharma; 09.02.2015
comment
Константу пишешь в struts.xml, конфигурацию действия пишешь в аннотации. Конфигурация действия из struts.xml удалить. - person Roman C; 09.02.2015
comment
Разве мы не можем использовать конфигурацию действий в struts.xml вместо аннотаций? - person Ankit Sharma; 09.02.2015
comment
Вы можете использовать конфигурацию действия, но она не работает с вышеуказанной константой. - person Roman C; 09.02.2015
comment
Это ограничение стойки или что-то не так с моей конфигурацией? Если я хочу добиться этого, как я могу это сделать? - person Ankit Sharma; 09.02.2015
comment
Это ваша ошибка, вы должны понять и следовать сказанному выше. - person Roman C; 09.02.2015
comment
Можно ли переопределить конфигурацию подключаемого модуля соглашения Struts (которая не будет соответствовать соглашению об именах)? Да, используйте аннотации. Я тоже пытался, но это не работает. Потому что вы не удалили конфигурацию действия из struts.xml. - person Roman C; 09.02.2015
comment
Если вы хотите переопределить конфигурацию действия из struts.xml с помощью аннотаций плагина соглашения, вы не можете этого сделать. Это ответ здесь. - person Roman C; 09.02.2015
comment
Спасибо, это я искал. Теперь я постараюсь, чтобы мой менеджер мог использовать аннотации;) - person Ankit Sharma; 09.02.2015
comment
Если этот ответ помог вам понять и решить вашу проблему, вы должны отметить его как принятое решение. - person Roman C; 10.02.2015