【问题标题】:Richfaces 4 autocomplete component AJAX Value UpdateRichfaces 4 自动完成组件 AJAX 值更新
【发布时间】: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 组件来调用该方法的部分原因。

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

【问题讨论】:

    标签: ajax jsf richfaces


    【解决方案1】:

    找到了我自己的问题的解决方案。基本上,需要学习如何使用 execute 属性。对任何其他 JSF 2.0 n00bs 的教训是使用执行来选择性地重新处理页面。使用执行,您可以创建一个以空格分隔的组件 ID 列表,这些组件 ID 的值应该重新绑定到支持 bean,以防它们需要在响应 AJAX 事件的侦听器中使用。在我的情况下,这意味着更改 jsFunction 标记如下:

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

    如您所见,现在的 jsFunction 在调用 assignDefaultNickname 函数时,将首先更新绑定到自动完成和 inputText 组件的值,然后运行 ​​assignDefaultNickname。

    【讨论】:

      猜你喜欢
      • 2015-04-10
      • 1970-01-01
      • 2015-04-02
      • 2014-06-20
      • 2012-12-02
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 2018-01-28
      相关资源
      最近更新 更多