【问题标题】:PrimeFaces ajax update is not triggered when required input field becomes empty当必需的输入字段为空时,不会触发 PrimeFaces ajax 更新
【发布时间】:2019-03-30 14:40:55
【问题描述】:

我正在使用带有 PrimeFaces 的 JSF,其字段如下所示。

    <p:outputLabel for="vehicle" value="#{msg['vehicle.text']}" />
    <p:autoComplete id="vehicle" value="#{newCtrlr.vehicleId.vehicle}" autocomplete="true" scrollHeight = "200" required = "true" 
    completeMethod="#{newCtrlr.vehicle_AutoComplete}"  minQueryLength = "2">
    <p:ajax event="itemSelect" listener = "#{newCtrlr.onVehicleChange}" update = "market" />
    <p:ajax event="change" listener = "#{newCtrlr.onVehicleChange}" update = "market" />                                        
    </p:autoComplete>

    <p:outputLabel for="market" value="#{msg['market.text']}" />
    <p:inputText id="market" value="#{newCtrlr.market.marketName}"  
    readonly = "#{empty newCtrlr.vehicleId.vehicle ? 'true' :'false' }" />

在上面的代码中,如果输入车辆价值,市场应该是可编辑的。如果车辆价值被清除,市场应该变成只读的。现在,由于车辆输入是“必需的”,因此不会触发 ajax 更新,因此市场保持启用状态。如果我删除车辆上的“必需”,一切正常。我想知道是否有办法使 inputText 成为必需,并在必填字段中的值更改为空/null 时触发 ajax 更新。

【问题讨论】:

    标签: validation jsf input primefaces xhtml


    【解决方案1】:

    首先,这种行为是默认的JSF行为:如果输入无效,则不会写入模型。 因此,您必须手动更改此行为,例如使用事件侦听器。

    将以下方法添加到您的 Backing-Bean:

    public void setModelValueToNullIfValidationFailed(ComponentSystemEvent event) throws AbortProcessingException {
        UIInput input = (UIInput) event.getComponent();
        if (input.isValid()) {
                return;
        }
        input.getValueExpression("value").setValue(FacesContext.getCurrentInstance().getELContext(), null);
    }
    

    此方法检查组件的验证是否失败。如果是,则模型值设置为 null。

    将 f:event 添加到您的 p:autoComplete:

    <p:autoComplete ...>
        ...
        <f:event type="postValidate" listener="#{newCtrlr.setModelValueToNullIfValidationFailed}" />
    </p:autoComplete>
    

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 2011-12-08
      • 2018-04-30
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      相关资源
      最近更新 更多