Я разрабатываю проект с использованием Hibernate, Struts 2 и Spring, но у меня проблемы со Struts.
Я создал 3 класса, расширяющих ActionSupport
, и реализую ModelDriven
для одного и того же класса во всех из них. Я реализовал некоторые методы, которые будут выполняться при вызове действий.
Структура занятий такая
Class1Action.java:
public class Class1Action extends ActionSupport implements ModelDriven<ModelDrivenClass> {
private ModelDrivenClass modelDrivenClass;
// getter and setter for modelDrivenClass
public String methodName() {
System.out.println("Entrou!");
return SUCCESS;
}
@Override
public Sensor getModel() {
return getSensor();
}
}
В struts.xml
я создал 3 действия, используя следующую структуру
struts.xml:
<action name="actionName1" method="methodName" class="Class1Action">
<interceptor-ref name="validation">
<param name="excludeMethods">methodName</param>
</interceptor-ref>
<result name="success" >success.jsp</result>
<result name="input" >input.jsp</result>
</action>
Кроме того, у меня есть JSP с 3 кнопками, относящимися к различным действиям Struts, и несколько полей, представляющих поля из управляемого моделью класса, используемого в 3 классах действий, и все поля внутри тега <s:push>
.
Проблема в том, что когда я заполняю поля и сразу после нажатия на любую из кнопок данные в полях отсутствуют.
Я попытался удалить 3 строки Struts, которые исключают методы из проверки, но вместо того, чтобы поля были пустыми, во второй раз, когда я нажал ту же кнопку, он возвращает ввод и перенаправляется на input.jsp.
Следующий код от success.jsp
, это стартовая страница:
успех.jsp:
<form method="post" >
<s:push value="modelDrivenClass">
<s:textfield label="FieldLabel1" name="modelDrivenClassAttribute1" />
<s:textfield label="FieldLabel2" name="modelDrivenClassAttribute2" />
<s:textfield label="FieldLabel3" name="modelDrivenClassAttribute3" />
<s:textfield label="FieldLabel4" name="modelDrivenClassAttribute4" />
<s:textfield label="FieldLabel5" name="modelDrivenClassAttribute5" />
</s:push>
<s:submit action="actionName1" name="Submit1" value="Submit1" />
<s:submit action="actionName2" name="Submit2" value="Submit2" />
<s:submit action="actionName3" name="Submit3" value="Submit3" />
</form>
Я не знаю, правильно ли это сделать, но я заставил его работать, когда использовал только один класс, реализующий ModelDriven
, и этот класс имеет все 3 метода.
Я просто пытаюсь так, потому что я хотел бы, чтобы мой код был четким и не имел всех методов только в одном классе.