2013-08-21 78 views
0

我在前端顯示一個類的幾個實例,用戶可以在其中更改對象的每個屬性,這可以在一個表單中添加多達1000 <select>Spring MVC/JSP處理巨大的表格

@Entity 
public class Entity extends ModelBase{ 
    @OneToOne 
    private AnotherEntity entityInstance; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionOne = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionTwo = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionThree = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionFour = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionFive = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionSix = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionSeven = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionEight = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionNine = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionTen = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionEleven = AEnum.None; 
    @Enumerated(EnumType.STRING) 
    private AEnum sessionTwelve = AEnum.None; 

     ... 
} 

JSP文件

<form> 
    <table> 
    <tr> 
     <td><select for sessionOne></td> 
     <td><select for sessionTwo></td> 
     <td><select for sessionThree></td> 
     <td><select for sessionFour></td> 
     <td><select for sessionFive></td> 
     <td><select for sessionSix></td> 
     <td><select for sessionSeven></td> 
     <td><select for sessionEight></td> 
     <td><select for sessionNine></td> 
     <td><select for sessionTen></td> 
     <td><select for sessionEleven></td> 
     <td><select for sessionTwelve></td> 
    </tr> 
    ... 
    </table> 
    <button type="submit"> 
</form> 

什麼是提交表單的最佳途徑?運行投擲每個選擇似乎並不是最好的方式。

+0

這是一個關於網頁設計和用戶體驗的問題,不是嗎?也許更好的方法是用多頁面形式創建對象? – yname

+0

也許我應該在OP中說過,但選擇只會是解決方案,如果javascript被禁用。通過啓用Javascript,用戶體驗將會更好,可以一次設置多個用戶喜歡的字段。我還應該提到大多數用戶的字段數量將在50-150個左右,但在極端情況下可能會增加到1000個。我同意這看起來像是一個非常糟糕的設計,但我認爲這是最好的方式意識到這一點,尤其要牢記js經驗。 – KenavR

+0

您是否嘗試過使用spring「form」taglib?如果沒有,我可以通過示例發佈答案 – yname

回答

0

嘗試使用spring「form」taglib。您可以創建封裝所有字段的特殊類,並將其傳遞到「GET」方法(顯示頁面)中進行建模。假設傳遞對象的名稱是「實體」。您還必須將所有枚舉值的列表傳遞給您的模型。 (請參閱示例:spring-form:options tag with enum)。 JSP看起來就像這樣:

<form:form commandName="entity" action="/action" method="POST"> 
    <form:select path="sessionOne"> 
     <form:options items="${availableOptions}" /> 
    </form:select> 
    <form:select path="sessionTwo"> 
     <form:options items="${availableOptions}" /> 
    </form:select> 
    <!-- and so on --> 
</form:> 

控制器代碼:

@RequestMapping(value = "/action", method = RequestMethod.POST) 
public String handleHugeForm(@ModelAttribute Entity entity) { 
    // do what you want 
} 

春 「形式」 的taglib教程:http://www.dzone.com/tutorials/java/spring/spring-form-tags-1.html