2015-04-27 1 views
0

Кажется, что я должен иметь параметры в strut.xml, определяемые как результат PER, а не глобально, но я не могу заставить его работать. Вот что делает работу:Struts2 param в результатах не работает

<action name="actThing" class="Thing" method="execute"> 
    <interceptor-ref name="newStack" /> 
    <param name="parentObject">Parent</param> 
    <result name="Edit">jspEditThing.jsp</result> 
    <result name="Add">jspAddThing.jsp</result> 
</action> 

В этом случае, когда Thing.execute вызывается переменная parentObject устанавливается. Но здесь:

<action name="actThing" class="Thing" method="execute"> 
    <interceptor-ref name="newStack" /> 
    <result name="Add"> 
     <param name="location">jspAddThing.jsp</param> 
     <param name="parentObject">Parent</param> 
    </result> 
    <result name="Edit">jspEditThing.jsp</result> 
</action> 

это не так. Так как это работает в первом случае, у меня наверняка есть правильные настройки/геттеры, и я не получаю никаких ошибок. Что мне не хватает?

Спасибо.

ответ

0

Это не работает, и это не должно потому что параметры применяются к результату, а не к действию. Результат выполняется после действия, и все параметры должны быть уже установлены.

Параметр tag устанавливает свойство объекта Result. Наиболее часто используемым свойством является location, который обычно указывает путь к веб-ресурсам. Атрибут param является еще одним интеллектуальным значением по умолчанию.

0
<action name="actThing" class="Thing" method="execute"> 
      <result name="Add"> 
       <param name="includeProperties">Parent.*</param> 
      </result> 
     </action> 

Теперь ваш родительский объект со всеми его атрибутами и дочерними объектами будет доступен.