2010-11-01 39 views
0

這裏是情況。Struts問題;使用相同的動作來顯示並提交

我有一個頁面叫做param.jsp,它只有一個表單和一個提交按鈕。數據庫中有一條記錄,當表單呈現時,我想用該記錄填充表單。提交表單時,我想更新該單個記錄並返回到同一頁面。在struts中執行此操作的最佳方法是什麼?

到目前爲止,我已經想出了這個;這裏是動作:

class MyAction extends DispatchAction{ 
    public ActionForward savePlatinumJLParam(......){ 
     //<insert the form to the database> 
     return mapping.findForward("<return to the same page>"); 
    } 
    public ActionForward initPlatinumJLParam(......){ 
     //<load the form from the database> 
     //form.setXX(...); 
     return mapping.findForward("<return to the same page>"); 
    } 
} 

節能工作得很好,但我有與填充表格的麻煩。任何幫助表示讚賞。

回答

0

當您渲染JSP時,您需要訪問bean中的變量來設置表單元素的值。

可能會是這個樣子,

<input type="text" name="username" value="<%= someBean.getSomeField() >"/> 

在這裏閱讀更多,http://struts.apache.org/1.x/userGuide/building_view.html

我知道這不是你的問題,但使用相同的動作,以保存和展示我不會reccomend。我將有一個操作來保存數據,並顯示一個不同的操作。然後,當您將數據提交到保存操作時,重定向到顯示操作。 This a question about redirecting.

0

如果你已經宣佈struts-config.xml像這樣的動作(假設NAME = 「submitForm」已聲明):

<form-beans> 
    <form-bean name="submitForm" type="hansen.playground.SubmitForm"/> 
</form-beans> 

<action path="/submit" 
       type="hansen.playground.SubmitAction" 
       name="submitForm" 
       input="/submit.jsp" 
       scope="request"> 
</action> 

和你的形式是這樣的:

package hansen.playground; 
public class SubmitForm extends ActionForm { 
    private String name; 
    private String contactEmail; 

    //Getters and setters are here.... 

} 

然後你可以在你的Struts DispatchAction(在我的情況下,SubmitAction)做到這一點:

package hansen.playground; 
public class SubmitAction extends DispatchAction{ 
    public ActionForward request(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ 
     //<insert the form to the database> 
     ((SubmitForm)form).setName("The Elite Gentleman"); 
     ((SubmitForm)form).setContactEmail("[email protected]"); 

     return mapping.findForward("<return to the same page>"); 
    } 
} 

因爲您的ActionForm映射到您的Struts Action,所以當調用request方法時,Struts會將SubmitForm發送到ActionForm form。將<action>標記上的name更改爲另一個ActionForm,Struts將根據請求發送該表單。

希望這有助於...


編輯在輸出時,你就必須從submitForm這樣顯示你的結果:

<html:text name="submitForm" property="name" /> 

(見的name屬性匹配 Struts表單名稱)。

+0

感謝您的回答,但這正是我所做的,並沒有奏效。我一定會錯過一些東西,我會嘗試你以後提供的這個例子併發布結果。 – 2010-11-01 17:57:17

+0

你得到了什麼異常? – 2010-11-01 18:02:44

+0

我沒有收到任何異常,表單字段呈現爲空。 – 2010-11-02 06:05:26