Primefaces Autocomplete值为字符串且标签不同时下拉美化实现问题
我正在将Richfaces 3.3.3 + JSF 1.2项目迁移至Primefaces 7.0 + JSF 2.1版本,项目存在不少历史遗留的非最优实现,暂只能按现有逻辑调整。
已实现的两个独立可用场景
场景1:String类型value转label展示
value属性为String类型,初始化传入的value需转换为label展示:转换器toObject方法返回模型/value字符串,toString方法返回对应label,completeMethod返回label字符串列表,实现代码如下:
<p:autoComplete id="berufstitel1Suggestion" value="#{partner.berufsTitel1Key}" maxlength="100" disabled="#{fieldsDisabled}" queryDelay="500" completeMethod="#{autoSuggestion75.getListForPFAutocomplete}" emptyMessage="Keine Treffer" dropdown="true" readonly="#{fieldsDisabled}" minQueryLength="2" converter="supportjsf.autocomplete.schluessel" forceSelection="true" scrollHeight="150" cache="true" > <f:attribute name="#{jsfUtilConstants.PARAM_SCHLARTCD}" value="#{regeldatenKonstantenPartnerS075.SCHLUESSEL_CD_BERUF_TITEL}" /> <f:attribute name="#{jsfUtilConstants.PARAM_SUPPORTDATA}" value="#{supportData75}" /> <f:attribute name="#{jsfUtilConstants.PARAM_KURZBEZ}" value="#{true}" /> </p:autoComplete>
场景2:label与value相同时的下拉美化
当label与value相同时,可通过var属性自定义下拉列展示,给选项增加额外信息美化,仅选择时展示美化内容,选中后回显正常label,实现代码如下:
<p:autoComplete id="ikzsuggestion" value="#{ptnAdr.adresse.staat}" maxlength="10" size="4" disabled="#{fieldsDisabled}" completeMethod="#{autoSuggBean[ikzSuggMethod]}" emptyMessage="Keine Treffer" dropdown="false" readonly="#{fieldsDisabled}" minQueryLength="2" forceSelection="true" scrollHeight="200" var="ikz" itemValue="#{ikz}" itemLabel="#{ikz}" queryDelay="500"> <f:attribute name="#{jsfUtilConstants.PARAM_SUPPORTDATA}" value="#{supportData75}" /> <p:column> <h:outputText value="#{ikz}" /> </p:column> <p:column> <h:outputText value="#{ikz}" converter="ukisjsf.staatikz2bezeichnungconverter"> <f:attribute name="#{jsfUtilConstants.PARAM_SUPPORTDATA}" value="#{supportData75}" /> </h:outputText> </p:column> </p:autoComplete>
待解决的问题
我无法实现两个场景的组合:即模型value与label为不同字符串,同时需要美化下拉框内的选项标签。我判断实现美化需要用到第二个示例中的var属性,但只要配置var相关逻辑就会出错,尝试多种方式都无法运行。
补充说明
我曾多次尝试用POJO实现,但由于value属性必须为String类型,且提交后需要支持组件重载,POJO方案始终不可用。
经过多日测试,两个基于String的独立场景均可行,但组合使用就会失效,请问有没有可行的解决方案?
内容的提问来源于stack exchange,提问作者Ande Hofer
相关产品推荐
相关产品推荐

