Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Richfaces 4自动完成组件AJAX值更新_Ajax_Jsf_Richfaces - Fatal编程技术网

Richfaces 4自动完成组件AJAX值更新

Richfaces 4自动完成组件AJAX值更新,ajax,jsf,richfaces,Ajax,Jsf,Richfaces,正在尝试将Richfaces 3.3项目迁移到4。获得了一个rich:suggestionBox组件并将其转换为rich:autocomplete组件,但遇到了重大问题 要求是:填写部分自动完成,为用户提供合适的选项。当用户从下拉列表中选择某个内容时,组件应更新其值,禁用自身,并计算/更新用户可以编辑的辅助字段中的默认值。到目前为止,我有: <a4j:jsFunction name="jsFunc" execute="autoComplete" render="specie

正在尝试将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的内容时,会调用AssignDefault昵称,一切正常,除了AssignDefault昵称中用于确定辅助字段individualUserStr值的计算取决于名称的值,但是在我提交表单之前,物种名称不会提交,因此在AssignDefault昵称中进行的计算是不正确的

在调用AssignDefault昵称之前,我需要以某种方式调用individualsBean.SelectedIndividualLem.userCommonName上的setter,但我不知道如何执行此操作。AJAX和这个自动完成功能似乎有问题;这就是为什么我必须首先使用这个完整的jsFunction组件来调用这个方法的部分原因


有没有关于如何解决这个问题的建议?

找到了我自己问题的答案。基本上,我们需要学习如何使用execute属性。任何其他JSF2.0N00B的经验都是使用execute有选择地重新处理页面。使用execute,您可以创建一个以空格分隔的组件ID列表,这些ID的值应该重新绑定到支持bean,以防它们需要在响应AJAX事件的侦听器中使用。在我的例子中,这意味着如下更改jsFunction标记:

<a4j:jsFunction name="jsFunc"
execute="species_name individualUserStr"
render="species_name individualUserStr"
actionListener="#{individualsBean.selectedIndividualElem.assignDefaultNickname}"/>

如您所见,JSF函数现在调用AssignDefault昵称函数时,将首先更新绑定到auto complete和inputText组件的值,然后运行AssignDefault昵称