2013-11-27 37 views
0

我將用複選框創建一個列表。任何像Gmail郵箱。我在HTML table標記中使用h:selectManyCheckbox,f:selectItem。但是jsf標籤本身就會創建一個表並破壞我的表單。 ID如何能說只是不再創建input標籤的jsf標籤?
以下是我的代碼和平:如何從jsf f中刪除無價標籤:selectItem

<tbody> 
    <h:selectManyCheckbox value="#{MemberControl.selectedUser}"> 
    <c:forEach items="#{MemberSearchControl.members}" var="member" varStatus="status"> 
    <tr> 
     <td><f:selectItem itemValue="#{member.id}"></f:selectItem> </td> 
     <td><span>#{member.lastName}</span></td> 
     <td><span>#{member.firstName}</span></td> 
     <td><span>#{member.shareCount}</span></td> 
     <td><span>#{member.phone}</span></td> 
    </tr> 
    </c:forEach> 
    </h:selectManyCheckbox> 
</tbody> 

並在下面,你可以看到的結果是:

enter image description here

你有沒有在正確的地方移動複選框,任何解決方案? (我使用純jsf不primefaces或更多) 謝謝。

回答

1

此行爲爲documented。你試圖解決這個問題絕對沒有意義。 <c:forEach><f:selectItem>應該只是<f:selectItems>,你應該使用自定義渲染器來完成這項工作。戰斧已經做過這對你來說,它的<t:selectManyCheckbox>layout="spread"屬性集,用在需要的地方宣佈<t:checkbox>組件一起,讓你完全控制標記:

<!-- This piece renders _nothing_. --> 
<t:selectManyCheckbox id="foo" value="#{bean.selectedItems}" layout="spread"> 
    <f:selectItems value="#{bean.availableItems}" /> 
</t:selectManyCheckbox> 

<!-- You can markup those the way you want. They solely render <input>. --> 
<t:checkbox for="foo" index="0" /> 
<t:checkbox for="foo" index="1" /> 
<t:checkbox for="foo" index="2" /> 
<t:checkbox for="foo" index="3" /> 
... 

另一種選擇是剛修好你的CSS樣式。它看起來太像你對泛化的檢討那些元素的,而不是隻有那些所有要應用由特定樣式類tabletrtd等風格,如table.datatable<h:dataTable styleClass="datatable">