JSF启用/禁用commandLink取决于在没有javaScript的情况下填充两个inputText和boolean标志

时间:2017-01-10 13:55:26

标签: jsf primefaces

我正在尝试根据多个条件启用/禁用commandLink。

一开始,commandLink被禁用。要启用它,我必须单击一个激活布尔标志的commandButton(此点当前正在工作)并且必须填充两个inputText。

CommandLink:

<p:commandLink id="buttonGuardar" action="#{vinculacionesGestionDetalleController.buttonGuardar}" update="@form" process="@form" styleClass="fa-commandlink fa-floppy-o" immediate="true" disabled="#{vinculacionesGestionDetalleController.flagGuardar and empty vinculacionesGestionDetalleController.vinculacionLaboral.denominacionCas and empty vinculacionesGestionDetalleController.vinculacionLaboral.denominacionVal}">

  <h:outputText value="#{msg.guardar}" />
</p:commandLink>

commandButton ,它从控制器返回一个布尔标志:

<p:commandButton id="validacionesValidarCodigoButton" actionListener="#{vinculacionesGestionDetalleController.buttonValidar}" value="Validar" styleClass="searchButton" icon="fa fa-button fa-check-circle" process="@form" style="margin-left: 20px;" update="buttonGuardar">
</p:commandButton>

的inputText:

<p:row>
  <p:column styleClass="alignTextRight">
    <h:outputLabel value="#{msg.vinculaciones_gestion_detalle_denominacionCas}" for="inputDenominacionCas" />
  </p:column>
  <p:column>
    <p:inputText id="inputDenominacionCas" style="width:100%" value="#{vinculacionesGestionDetalleController.vinculacionLaboral.denominacionCas}" />
  </p:column>
</p:row>

<p:row>
  <p:column styleClass="alignTextRight">
    <h:outputLabel value="#{msg.vinculaciones_gestion_detalle_denominacionVal}" for="inputDenominacionVal" />
  </p:column>
  <p:column>
    <p:inputText id="inputDenominacionVal" style="width:100%" value="#{vinculacionesGestionDetalleController.vinculacionLaboral.denominacionVal}" />
  </p:column>
</p:row>

如您所见,我尝试在commandLink的disable属性上使用两个以上的条件:

disabled="#{vinculacionesGestionDetalleController.flagGuardar and not empty vinculacionesGestionDetalleController.vinculacionLaboral.denominacionCas and not empty vinculacionesGestionDetalleController.vinculacionLaboral.denominacionVal}"

但它没有用。

1 个答案:

答案 0 :(得分:1)

首先,&#34;禁用的逻辑操作&#34;属性是错误的。据我所知,你想在flag为true且inputTexts不为空时启用链接。

enabled="#{flag and not empty inputText1 and not empty inputText2}"

哦不,commandLink没有启用属性。没问题:

disabled="#{not (flag and not empty inputText1 and not empty inputText2)}"

现在,inputTexts值的更改必须触发将更新commandLink的ajax事件。

<p:row>
  <p:column styleClass="alignTextRight">
    <h:outputLabel value="#{msg.vinculaciones_gestion_detalle_denominacionCas}" for="inputDenominacionCas" />
  </p:column>
  <p:column>
    <p:inputText id="inputDenominacionCas" style="width:100%" value="#{vinculacionesGestionDetalleController.vinculacionLaboral.denominacionCas}" >
        <p:ajax event="keyup" update="buttonGuardar"/> 
    </p:inputText>
  </p:column>
</p:row>

<p:row>
  <p:column styleClass="alignTextRight">
    <h:outputLabel value="#{msg.vinculaciones_gestion_detalle_denominacionVal}" for="inputDenominacionVal" />
  </p:column>
  <p:column>
    <p:inputText id="inputDenominacionVal" style="width:100%" value="#{vinculacionesGestionDetalleController.vinculacionLaboral.denominacionVal}" >
        <p:ajax event="keyup" update="buttonGuardar"/> 
    </p:inputText>
  </p:column>
</p:row>

如果你想只在inputText失去焦点时才触发ajax事件,你可以使用&#34; blur&#34;事件而不是&#34; keyup&#34;。