【问题标题】:rich:autocomplete not working丰富:自动完成不工作
【发布时间】:2014-01-26 09:19:33
【问题描述】:

我们正在从 jsf 1.2 升级到 jsf 2。 我们使用的是 apache myfaces 2.1 和 rich faces 4.3。

以下是迁移前的 xhtml 代码:

<h:inputText id="#{userSearch}" value="#{bean.input}"/>
<rich:suggestionbox for="#{userSearch}" var="rslt" suggestionAction="#{bean.getSearchList}">                                    

</rich:suggestionbox>

根据迁移文档,将 &lt;rich:suggestionbox&gt; 替换为 &lt;rich:autocomplete&gt;. 以下是 xhtml 代码:

<rich:autocomplete mode="ajax" autocompleteMethod="#{bean.getSearchList}" />

下面是getSearchList方法

  public List<CustomObject> getSearchList(String searchNow) {


  } 

&lt;rich:autocomplete&gt; 组件存在于自定义组件中,调用方式如下:

 <example:SearchUsr bean="#{someOtherObject.bean}"/>

我面临的问题是,当在 &lt;rich:autocomplete&gt; 中输入输入时,会发生 ajax 调用,但我遇到了以下异常: 目标不可达,标识符“bean”解析为空。

我在 xhtml 中打印了 bean(bean.getSearchList 的)的值,它不为空。

我在使用 &lt;rich:autocomplete&gt; 时是否遗漏了什么?请帮忙。

编辑 1: 当像这样调用 autocompleteMethod 时:#{masterBean.object2.object3.getSearchList},如果 masterBean 是 faces-config.xml 中定义的具有会话范围的对象,则不会观察到此问题。 autocompleteMethod 也必须接受 String 参数而不是对象。 那么我们不能在中间对象上调用 autocompleteMethod 吗?它必须是 JSF 中定义的 bean 吗?这很奇怪,但我观察到了同样的行为。

编辑 2: 在尝试寻找答案时,得到了说明相同问题的链接:autocomplete method does not resolve bean if ui:included and only one parameter provided 它提供了两个选项:使用 3 个参数定义自动完成方法,使用复合组件,而不是 ui:inlcude。

【问题讨论】:

  • 自定义组件是指 facelet 自定义组件还是复合组件?
  • @L-Ray:它是一个facelet cutom组件

标签: jsf-2 richfaces jsf-1.2


【解决方案1】:

从 EDIT 2 可以看出,自动完成方法签名更改为:

public List&lt;CustomObject&gt; getSearchList(FacesContext context, UIComponent uiComp,String searchNow),问题解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2015-10-14
    • 2012-01-25
    相关资源
    最近更新 更多