Как я могу сделать p:cellEditor условным в PrimeFaces?

Вот мой код, который не работает:

...
<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, если он недоступен для редактирования. Что я хочу сделать, так это то, что когда пользователь нажимает «Изменить» для записи, в редактируемых полях отображаются поля ввода, а затем в нередактируемых полях отображаются их значения. С приведенным выше кодом, когда столбец не редактируется, значение не отображается до и после нажатия кнопки «Изменить». Когда поле доступно для редактирования, отображается значение, а когда вы нажимаете «Изменить», значение заменяется полем ввода, содержащим значение. Итак, мой пример работает, за исключением того, что значение полностью скрыто, когда поле недоступно для редактирования. Я хочу, чтобы нередактируемые значения отображались, когда они не редактируются, и при редактировании, я просто не хочу, чтобы они редактировались во время редактирования.


person Roberto Murphy    schedule 01.05.2013    source источник
comment
rendered=#{editUIBean.isEditable('customerId')}, как получить 'customerId'?   -  person Rong Nguyen    schedule 02.05.2013


Ответы (1)


Этот,

<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>
person BalusC    schedule 02.05.2013