Struts 中form表單提交(數據綁定)


在Struts2中,Form的提交非常方便。

e.g: A 要在Action中取出頁面提交的username和password,兩個屬性同屬User對象,此時:

  在Action中,聲明public User user;並給出get()和set();

  在JSP中,

    <input type="text" name="user.username"/>  或用標簽:<s:textfield name="user.username" label="用戶名"/> 
    <input type="text" name="user.password"/>  或用標簽:<s:textfield name="user.password" label="密 碼"/>

  這樣可將user對象的輸入值直接綁定到Action中。

e.g: B 然而,很多時候我們需要不不僅僅是一個對象,而是多個對象,List,Map,又或者Set。

先說 Map和List:

   如果 Action 中的屬性是 Map<String, User> users; 那么與此對應的表單寫法就是:(用標簽來寫) 
            <s:textfield name="users['one'].username" label="第一個用戶名"/> 
            <s:textfield name="users['one'].password" label="第一個密碼"/> 
            <s:textfield name="users['two'].username" label="第二個用戶名"/> 
            <s:textfield name="users['two'].password" label="第二個密碼"/>

  此時,綁定到Action中的就是一個Map類型的users["one","two"]

  如果是對於 Action 中的  List 屬性,List<User> users; 那么與此對應的表單寫法就是: 
            <s:textfield name="users[0].username" label="第一個用戶名"/> 
            <s:textfield name="users[0].password" label="第一個密碼"/> 
            <s:textfield name="users[1].username" label="第二個用戶名"/> 
            <s:textfield name="users[1].password" label="第二個密碼"/> 

  此時,綁定到Action中的就是一個List類型的users[0,1]

e.g C 我們再來看看Set,set是一個無序集合,所以無法像 List 那樣用數字下標來訪問

此時提交頁面這么寫,最好提交前能根據輸入的用戶名自動修動輸入框的 name。 
        用戶名: <input name="users('scott').username"/> 
        密 碼: <input name="users('scott').password"/> 
顯示的時候頁面可用標簽 
        用戶名: <s:property value="users('scott').username"/> 
        密 碼: <s:property value="users('scott').password"/> 

 

<input type="user.username" value="jack"> 
<input type="user.username" value="lucy"> 
action中取得username的值是"jack,lucy". 
注意:此處password是字符串類型,不是數組類型 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM