【发布时间】:2011-09-24 16:16:54
【问题描述】:
尝试将 Richfaces 3.3 项目迁移到 4。得到了一个 rich:suggestionBox 组件并将其转换为一个rich:autocomplete 组件,但遇到了很大的麻烦。
要求是:填写自动完成部分,它为用户提供合适的选项。当用户从下拉列表中选择某些内容时,组件应更新其值,禁用自身,并计算/更新用户可以编辑的辅助字段中的默认值。到目前为止,我有这个:
<a4j:jsFunction name="jsFunc"
execute="autoComplete"
render="species_name individualUserStr"
actionListener="#{individualsBean.selectedIndividualElem.assignDefaultNickname}"/>
<rich:autocomplete
autocompleteMethod="#{individualsBean.speciesForBox}"
mode="cachedAjax"
layout="table"
var="sp"
id="species_name"
value="#{individualsBean.selectedIndividualElem.userCommonName}"
fetchValue="#{sp.commonName}"
disabled="#{individualsBean.selectedIndividualElem.userCommonName != null
and individualsBean.selectedIndividualElem.userCommonName ne ''}"
onselectitem="jsFunc()"
>
...
</rich:autocomplete>
<h:inputText value="#{individualsBean.selectedIndividualElem.ssi.individualUserStr}"
id="individualUserStr"
maxlength="28"
styleClass="inputTextMediumRF">
</h:inputText>
现在,当用户选择调用 jsFunc 的内容时,将调用 assignDefaultNickname 并且一切正常,除了用于确定辅助字段 individualUserStr 值的 assignDefaultNickname 中的计算取决于该值种名,但是种名直到我提交表单才提交,所以在assignDefaultNickname中所做的计算是不正确的。
在调用 assignDefaultNickname 之前,我需要以某种方式调用 individualBean.selectedIndividualElem.userCommonName 上的设置器,但我不知道该怎么做。 AJAX 和这个自动完成功能似乎有问题;这就是为什么我必须首先使用这个循环的 jsFunction 组件来调用该方法的部分原因。
关于如何解决这个问题的任何建议?
【问题讨论】: