我正在開發一個使用hibernate,struts2和spring的項目,但我的問題是使用struts。
我已經創建了3個擴展ActionSupport的類,並且正在爲它們中的同一個類實現modeldriven。在調用動作時,我已經實現了一些要執行的方法。
針對類別的結構等(Class1Action.java):模型驅動支桿2
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中我已創建使用下一個結構(struts.xml中)3動作:
<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,即起始頁:
<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種方法。我只是想這樣,因爲我想讓我的代碼清晰,並沒有在一個類中的所有方法。