3

Я написал код, как:р: колонка оказывается атрибут не похож на работу с р: DataTable вар

<p:column headerText="Edit" width="40" rendered="#{(leaveDetails.strLeaveStatus == 'Canceled') or (leaveDetails.strLeaveStatus == 'Availed')}"> 
    <p:commandLink actionListener="#{userLeaveBean.editAppliedLeave}" title="Edit" disabled="true" process="@this" update="leaveDataTable" immediate="false"> 
     <h:graphicImage url="resources/images/edit.JPG"/> 
      <f:attribute name="userId" value="#{employee.name}"/> 
      <f:attribute name="editFirstHalf" value="#{leaveDetails.strStartTiming}"/> 
      <f:attribute name="editSecondHalf" value="#{leaveDetails.strEndTiming}"/> 
      <f:attribute name="editFrom" value="#{leaveDetails.dtLeaveFromDate}"/> 
      <f:attribute name="editTo" value="#{leaveDetails.dtLeaveToDate}"/> 
      <f:attribute name="leaveId" value="#{leaveDetails.strLeaveId}"/> 
    </p:commandLink> 
</p:column> 

Но тонированное атрибут не работает в состоянии. Как использовать логический оператор для выполнения условия? Использование PrimeFaces 3.4.2

ответ

0

Лучшим способом я использовал, чтобы решить мою проблему с помощью GOD BalusC является:

<p:column headerText="Edit" width="40"> 
    <p:commandLink actionListener="#{userLeaveBean.editAppliedLeave}" title="Edit" process="@this" update="leaveDataTable" 
     immediate="false" disabled="#{(leaveDetails.strLeaveStatus == 'Canceled') or (leaveDetails.strLeaveStatus == 'Availed')}"> 
     <h:graphicImage url="resources/images/edit.JPG"/> 
     <f:attribute name="userId" value="#{employee.name}"/> 
     <f:attribute name="editFirstHalf" value="#{leaveDetails.strStartTiming}"/> 
     <f:attribute name="editSecondHalf" value="#{leaveDetails.strEndTiming}"/> 
     <f:attribute name="editFrom" value="#{leaveDetails.dtLeaveFromDate}"/> 
     <f:attribute name="editTo" value="#{leaveDetails.dtLeaveToDate}"/> 
     <f:attribute name="leaveId" value="#{leaveDetails.strLeaveId}"/> 
    </p:commandLink> 
</p:column> 

и она работает так гладко, как масло!

+4

Обратите внимание, что ваш первоначальный вопрос не сформулирован как таковой. Вы нигде не указали конкретное функциональное требование, как в * «Мне нужно отключить командную ссылку при условии X» *. В будущих вопросах вам лучше сделать это вместо того, чтобы в основном сбрасывать кучу строк неправильного кода (неправильно, так что конкретное функциональное требование не сразу становится очевидным) и просто говорит: «Это не работает», *. – BalusC

10

Вы не можете условно отобразить столбец для каждой строки. Это логически не имеет никакого смысла. Вы можете условно отображать его только для каждой таблицы. <p:column rendered> не может принять условие, основанное на свойствах итерированной строки. Он может принимать только условие, основанное на свойствах родительского компонента.

Если вы намерены условно скрыть только ячейку в настоящее время повторного ряда, а затем просто переместить атрибут rendered из <p:column> в <p:commandLink> или, по меньшей мере, компонент, который оборачивает всю <p:column> содержимое, например, <h:panelGroup>.

Или, если вы действительно намерены условно скрыть столбец всего, а затем переместить условия, используемые в rendered атрибуте <p:column> к #{userLeaveBean} родительскому компоненту.

+0

Я хочу сделать что-то вроде этого: Если значение для 'leaveDetails.strLeaveStatus' является« Отменено »или« Пользуется »,' 'p следует отключить иначе' 'should быть включен. Не хотите скрывать столбец при любых условиях. – NDeveloper

+2

Затем просто поместите условие в атрибут 'disabled'' '? Обратите внимание, что ваша текущая попытка кода с '' явно пытается скрыть столбец при условии. – BalusC

Смежные вопросы