Jsf 将结果从p:autoComplete';在使用之前,请先使用完整的方法

Jsf 将结果从p:autoComplete';在使用之前,请先使用完整的方法,jsf,primefaces,autocomplete,Jsf,Primefaces,Autocomplete,我正在实现一个用于注册地址的对话框。在street name字段中,我使用PrimeFaces的标记帮助用户找到他们的街道名称。completeMethod的工作原理与预期相同,但为了避免类似街道名称之间的混淆,我希望下拉列表中还包括给定街道所在的市镇,例如格式为“”,“” 我不希望市政名称包含在实际字段中,因此我得出结论,我需要一个执行某种字符串操作的方法(例如,使用第一个逗号位置的子字符串),但我无法确定从何处调用这种方法。我已经查阅了PrimeFaces文档,但没有找到任何可以让我这样做的

我正在实现一个用于注册地址的对话框。在street name字段中,我使用PrimeFaces的
标记帮助用户找到他们的街道名称。
completeMethod
的工作原理与预期相同,但为了避免类似街道名称之间的混淆,我希望下拉列表中还包括给定街道所在的市镇,例如格式为“
”,“

我不希望市政名称包含在实际字段中,因此我得出结论,我需要一个执行某种字符串操作的方法(例如,使用第一个逗号位置的子字符串),但我无法确定从何处调用这种方法。我已经查阅了PrimeFaces文档,但没有找到任何可以让我这样做的内容。这在
中可能吗?或者,是否有另一个支持此功能的自动完成实现,或者我必须实现自己的javascript组件

编辑:这就是我正在使用的xhtml代码的样子:

<div class="form-group row required">
    <h:outputLabel value="#{msgs['@common.mailingAddress']}" for="address" styleClass="col-xs-12"/>
    <p:autoComplete
        id="address"
        name="address"
        size="50"
        maxlength="50"
        styleClass="col-xs-12 street-name"
        label="#{msgs['@common.search']}"
        disabled="#{not configurationController.cardCtrl.editable}"
        value="#{configurationController.cardCtrl.selected.address}"
        required="true"
        completeMethod="#{configurationController.cardCtrl.autoCompleteTest}">
        <f:validator binding="#{onlyLettersOrDigitsValidator}"/>
    </p:autoComplete>
    <h:message id="addressMessage" for="address" styleClass="inline-error inline-error-small"/>
</div>
使用helper方法
AddressestoretNames
,该方法获取地址对象列表并返回包含这些地址的街道名称的
ArrayList

编辑2:根据评论中的建议,我尝试将
itemValue
itemLabel
设置为不同的值,以查看是否有任何效果。新的xhtml与上述类似,添加了以下三行:

var="address"
itemValue="#{address.streetName}"
itemLabel="#{configurationController.cardCtrl.formatAddress(address.streetName, address.postTown)}"
autoCompleteTest方法现在还直接返回Address对象,而不是街道名称的字符串表示形式,因此这些字段可用。formatAddress方法是简单的
returnstreetName+,'+postTown

这会使下拉列表显示我希望它的外观,但当我单击某个项目时,它仍然会将包含街道名称和邮政城市/市政的整个字符串插入文本字段(事实上,在我编写任何内容之前,文本字段已经包含“,”).

你能分享你的代码吗?你是如何使用自动完成的?@AshishMathew code添加的!为什么showcase中的自定义内容示例不是一个选项:我可能有点误解,但从我所知道的情况来看,没有一个示例在字段中插入了与下拉菜单中所选内容不同的文本(例如,如果我从列表中选择了“午后”,则字段中的文本只是-“下午”)。我想要的是,如果下拉菜单项显示“下午主题”,但只有“下午”部分出现在文本字段中。@GlossyMage这正是自定义内容示例演示的内容。您必须使用
itemValue
itemLabel
属性为值显示不同的标签。
var="address"
itemValue="#{address.streetName}"
itemLabel="#{configurationController.cardCtrl.formatAddress(address.streetName, address.postTown)}"