Primefaces ajax处理空输入字段

时间:2017-08-17 06:24:03

标签: ajax jsf primefaces

我有一个自动填充字段和一个输出标签,用于显示所选模块代码的标题

<p:row>
    <p:column>
        <p:outputLabel for="moduleTitle" value="Module Title: " />
    </p:column>
    <p:column colspan="2">
        <p:outputLabel id="moduleTitle" value="#{classroomBean.classroom.module.moduleTitle}"/>
    </p:column>
</p:row>

<p:row>
    <p:column>
        <p:outputLabel for="moduleCode" value="Module Code:" />
    </p:column>
    <p:column>
        <p:autoComplete id="moduleCode" value="#{classroomBean.classroom.module}" 
completeMethod="#{classroomBean.completeModule}" dropdown="true" 
forceSelection="true" 
converter="entityConverter" maxResults="15" required="true" 
requiredMessage="Module is required." var="module" itemValue="#{module}" itemLabel="#{module.moduleCode}">
            <p:ajax event="itemSelect" update="moduleTitle" />
        </p:autoComplete>
    </p:column>
</p:row>

这样可以正常工作,但是当自动填充字段为空时,我想要清除moduleTitle字段。任何的想法?我试图添加<p:ajax event="keyup" listener="#{...}" />但是没有调用支持bean方法。我也不知道如何从ajax获取自动完成字段的字符串长度。

1 个答案:

答案 0 :(得分:1)

p:ajax组件上添加keyup p:ajax个事件以及itemSelect p:autoComplete个事件,以更新尊重字段,如下所示:

<p:autoComplete id="moduleCode" value="#{classroomBean.classroom.module}"
    completeMethod="#{classroomBean.completeModule}" dropdown="true"
    forceSelection="true" converter="entityConverter" maxResults="15"
    required="true" requiredMessage="Module is required."
    var="module" itemValue="#{module}" itemLabel="#{module.moduleCode}">
    <p:ajax event="keyup" update="moduleTitle" />
    <p:ajax event="itemSelect" update="moduleTitle" />
</p:autoComplete>