2009-12-19 31 views
10

我有一個命令對象FaxForm,它擁有一個faxStatusList屬性內的FaxStatus對象列表。使用Spring的表單標籤動態綁定列表

public class FaxForm { 
    private List<FaxStatus> faxStatusList; 
    public void setFaxStatusList(List<FaxStatus> faxStatusList) { 
    this.faxStatusList = faxStatusList; 
    } 
    public List<FaxStatus> getFaxStatusList() { 
    return faxStatusList; 
    } 
} 

我最初有一個JSP頁面,將通過執行綁定的對象如下:

<c:forEach items="${esaFaxForm.faxStatusList}" var="item" varStatus="loop"> 
    <tr class="tableAltBackground"> 
    <td> 
     <form:checkbox path="faxStatusList[${loop.index}].selected"/> 
    </td> 
    <td> 
     <form:select path="faxStatusList[${loop.index}].status" items="${esaFaxForm.statusOptions}" onchange="checkThisBox(this);"/> 
    </td> 
    <td> 
     <a href="${statusContUrl}?id=${item.id}&status=${item.status}" onclick="openFaxWindow('${viewFaxUrl}?id=${item.id}', ${loop.index});">${item.name}</a> 
     <form:hidden path="faxStatusList[${loop.index}].name"/> 
    </td> 
    <td> 
     <a href="${statusContUrl}?id=${item.id}&status=${item.status}" onclick="openFaxWindow('${viewFaxUrl}?id=${item.id}', ${loop.index});">${item.id}</a> 
     <form:hidden path="faxStatusList[${loop.index}].id"/> 
    </td> 
    </tr> 
</c:forEach> 

不過,我想弄清楚我怎麼可以沒有foreach循環和索引的結合。 Spring網站上的示例通過將路徑設置爲列表名稱來顯示綁定。有沒有辦法來綁定屬性?我試過,但它失敗:

<form:checkbox path="faxStatusList.faxStatus.selected"/> 
<form:select path="faxStatusList.faxStatus.status" items="${esaFaxForm.statusOptions}"/> 

的faxStatusList有一個getter和setter方法和FaxStatus變量都有的getter/setter屬性。我得到的錯誤「bean類的無效屬性‘faxStatusList.faxStatus’......」

+0

faxStatusList是一個索引屬性。所以你不能使用像faxStatusList.faxStatus這樣的東西。改用faxStatusList []。faxStatus。 – 2009-12-19 22:41:30

+0

我真的很喜歡你當前的代碼作爲答案,因爲它提供了很大的靈活性。 – Steve 2011-03-01 15:27:57

回答

9

Spring表單標籤具有複選框標籤。

<form:checkboxes items="${faxStatusList}" path="faxStatusList" itemLabel="name" itemValue="id" delimiter="<br/>" onclick="yourOnClickMethodIfYouNeed(this);"/> 

上面的代碼會顯示與BR標記分隔複選框項目的列表:可以按如下方式做自動綁定使用它。對複選框狀態所做的任何更改都會反映在您的FaxForm中。 faxStatusList對象。