Я переношу существующее приложение Struts1 в Struts2. Я сохранил иерархию классов Action
s и ActionForm
s одинаковой.
Действия Struts2 SuperAction
расширяются из ActionSupport
и имеют ModerlDriven
переменную-член SuperForm
, а SubAction
расширяются из SuperAction
и имеют ModelDriven
переменную-член SubForm
.
Конечно, SubForm
является подклассом SuperForm
. И SubAction
, и SuperAction
имеют некоторые методы действия.
SubAction
конструктор выглядит так:
public SubAction() {
subForm = new SubForm();
this.superForm(this.subForm);
}
Теперь у меня есть сценарий, в котором я вызываю метод SuperAction
из сопоставления SubAction
, например:
<package name="sub-pkg" namespace="/subns" extends="struts-default" strict-method-invocation="true">
<action name="subAction_*" method="{1}" class="com.company.SubAction">
<result name="showArchived" type="chain">subAction_list</result>
<result name="list">/jsps/list_logs.jsp</result>
<allowed-methods>list, showArchived</allowed-methods>
</action>
</package>
Метод действия SuperAction.showArchived()
устанавливает значения в свою переменную-член superForm.setLogMode()
и возвращает String
showArchived
, что, как видно из сопоставления, связано с методом действия SubAction.list()
.
Этот метод использует атрибут SuperForm
logMode
из своей переменной-члена subForm
и возвращает String
list
для отображения list_logs.jsp
.
Цепочка действий работает, но она не передает значение атрибута SuperForm
logMode
, в данном случае цепочка методов SuperAction
в метод SubAction
.
Какие-либо предложения?
Обновление:
На самом деле, я обнаружил общую проблему, не относящуюся к действиям SuperClass/SubClass
. Обычно это происходит из-за того, что использование type="chain"
не работает для объекта модели в ModelDriven
действиях.
Поэтому chain
не повторно заполняет свойства модели в конце chain
для второго действия.
Мы ценим любые предложения.
SuperForm
есть заполненное свойство, которое не отражено вSubForm
? Если это так, нам, вероятно, понадобится дополнительная информация о классах форм. - person Dave Newton   schedule 01.02.2018SubForm
является подклассомSuperForm
. Что еще нужно знать? - person Shah-G   schedule 06.02.2018