这是我的代码不起作用:
...
<p:column sortBy="#{invoice.customerId}" id="customerId">
<f:facet name="header"><h:outputText value="Customer ID"/></f:facet>
<f:facet name="output" rendered="#{!editUIBean.isEditable('customerId')}">
<h:outputText value="#{invoice.customerId}"/>
</f:facet>
<p:cellEditor rendered="#{editUIBean.isEditable('customerId')}">
<f:facet name="output">
<h:outputText value="#{invoice.customerId}"/>
</f:facet>
<f:facet name="input">
<h:inputText value="#{invoice.customerId}"/>
</f:facet>
</p:cellEditor>
</p:column>
...
所以我要做的是:用户选择一个选项,该选项确定哪些记录是可编辑的,并且只显示可为该选项编辑的记录。对于任何给定选项,只能编辑这些记录中的某些列。如果对于给定选项,列可编辑,则isEditable(columnName)方法返回true,如果列不可编辑,则返回false。我想要做的是,当用户单击编辑记录时,可编辑字段显示输入字段,然后不可编辑字段显示其值。使用上面的代码,当列不可编辑时,在单击编辑之前和之后不显示该值。当字段可编辑时,将显示该值,当您单击编辑时,该值将替换为包含该值的输入字段。所以我的示例有效,只是当字段不可编辑时,该值完全隐藏。我希望在不编辑和编辑时显示不可编辑的值,我只是不希望它们在编辑期间可编辑。
答案 0 :(得分:8)
此,
<p:column>
<f:facet name="output" rendered="#{!editUIBean.isEditable('customerId')}">
<h:outputText value="#{invoice.customerId}" />
</f:facet>
...
</p:column>
不对。 <p:column>
不支持<f:facet name="output">
。只需将rendered
条件放在<h:outputText>
本身上。
<p:column>
<h:outputText value="#{invoice.customerId}" rendered="#{!editUIBean.isEditable('customerId')}" />
...
</p:column>