【问题标题】:Autocomplete + dropdownlist +primefaces自动完成 + 下拉列表 +primefaces
【发布时间】:2015-12-14 05:33:09
【问题描述】:

对primefaces还很陌生,所以如果容易的话,请原谅我。

因为我想在更改下拉列表中的值时清除自动完成文本框。

在我的 xhtml 页面中,当我从下拉列表中选择公司时,与该国家相关联的银行就会出现。当我选择银行时,与该银行关联的分行将进入下一个自动完成字段。工作正常。

但是当我选择下一个国家时,自动完成字段没有被清除。

请帮我解决这个问题。

这个 div 是国家/地区的下拉列表

<div class="row" >
    <div class="grid4 bordered-box">
        <p:outputLabel styleClass="col4 mandatory-field" value="#{msg['Label.CountryList']}" /> 
        <div class="col5">
            <p:selectOneMenu   id="countryList" style="width: 10px ; border:1px #DDDBDB solid ;background-color: #F4EDC1;" filter="true" filterMatchMode="startsWith"  required="true" 
                               value="#{bankBranchController.bankBranchDetails.countryCode}">
                <p:ajax process="@this" update="bankDD"  />
                <f:selectItems
                    value="#{bankBranchController.countryList}"
                    var="item" itemLabel="#{item.label}"
                    itemValue="#{item.value}" />
                <f:selectItems/>
            </p:selectOneMenu>


        </div>
    </div>
</div>

此 div 用于银行的自动完成

<div class="grid4 bordered-box">
    <p:outputLabel styleClass="col4 mandatory-field" value=" Bank " /> 
    <div class="col5">                           
        <p:autoComplete  id="bankDD" minQueryLength="3" value="#{bankBranchController.bankBranchDetails.bankName}" completeMethod="#{bankBranchController.getBankListAutoComplete}"
                         var="varItem" itemLabel="#{varItem.label}" itemValue="#{varItem.value}" scrollHeight="120" >
            <p:ajax event="itemSelect" update="branchDD"></p:ajax>

        </p:autoComplete>      
    </div>
</div>

此 div 用于分支的自动完成

<div class="col5">
    <p:autoComplete  id="branchDD" minQueryLength="3" value="#{bankBranchController.bankBranchDetails.bankBranchName}" 
                     completeMethod="#{bankBranchController.getBankBranchListAutoComplete}"
                     var="item" itemLabel="#{item.label}" itemValue="#{item.value}" scrollHeight="120" >      
    </p:autoComplete>                               
</div>

【问题讨论】:

    标签: primefaces autocomplete


    【解决方案1】:

    你应该在&lt;p:ajax process="@this" update="bankDD" /&gt;中添加监听器方法,在那个方法中你应该bankBranchDetails.setBankName("")甚至bankBranchDetails = new BankBranchDetails(),反正它应该被清除。

    【讨论】:

    • 我在那个国家下拉列表中写了同样的 。并在那个resetBranch,bankBranchDetails.setBankName(“”)中。但它会导致错误,因为“类'java.lang.string'没有属性'label'
    • 没错,你的自动完成的completeMethod返回字符串列表,你想用var="item" itemLabel="#{item.label}" itemValue="#{item.value}"但是java.lang.String既没有getLabel(),也没有getValue()方法……这是另一个问题。
    • 还有其他解决方案吗?
    • 我……什么?这不是问题,只需通过删除 var、itemLabel 和 itemValue 属性来修复您的&lt;p:autoComplete......
    猜你喜欢
    • 1970-01-01
    • 2011-05-12
    • 2019-10-15
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多