为什么<h:datatable>使所有行与“selected row”值相同?</h:datatable>

时间:2011-04-09 10:52:10

标签: jsf datatable

我的ArrayList Collection正确地传递了值,但是当我在 h:dataTable 标记中呈现它时,行变成了与图片中相同的值。

enter image description here

<h:dataTable value="#{contactController.contacts }" var="contact"
            rowClasses="oddRow, evenRow" styleClass="contactTable"
            headerClass="headerTable" columnClasses="normal,centered"
            rendered="#{not empty contactController.contacts }">
            <h:column>
                <f:facet name="header">
                    <h:column>
                        <h:outputText value="Name" />
                    </h:column>

                </f:facet>
                <h:outputText
                    value="#{contactController.contact.firstName }#{ contactController.contact.secondName }" />
            </h:column>
            <h:column>
                <f:facet name="header">
                    <h:column>
                        <h:outputText value="Action" />
                    </h:column>
                </f:facet>
                <h:panelGrid columns="2">
                    <h:commandLink value="remove"
                        action="#{contactController.remove }">
                        <f:setPropertyActionListener value="#{contact }"
                            target="#{contactController.selectedContact }" /> 
                    </h:commandLink>
                    <h:commandLink value="edit" action="#{contactController.read}">
                        <f:setPropertyActionListener value="#{contact }"
                            target="#{contactController.selectedContact }" />
                    </h:commandLink>
                </h:panelGrid>
            </h:column>
        </h:dataTable>

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我认为您的代码存在两个问题。

首先,您不需要列中的bean名称。只需使用var属性的内容(在您的情况下为“contact”而不是“contactController.contact”)

第二:h:column内的f:facet不正确。将h:outputText直接放入f:facet

以这种方式更改您的第一列:

<h:column>
  <f:facet name="header">
     <h:outputText value="Name" />
  </f:facet>
  <h:outputText value="#{contact.firstName} #{contact.secondName }" />
</h:column>