没有发现任何组件处理为'ajaxSingle'

时间:2010-09-01 09:07:35

标签: java jsf richfaces

发现奇怪的问题,可能是错误。

我有两个与Richfaces相同的网页:suggestionbox。

在第一个我的建议盒做得很好,一切正常,但在另一个我有一些问题。 SuggestionBox没有显示我的建议。在日志中我有这样的东西:

WARNING: No component found to process as 'ajaxSingle' for clientId remains-form:konta-suggest
2010.1.9 12:02:29 org.ajax4jsf.component.AjaxViewRoot processPhase

有任何结论吗?

UPD:

    <h:inputText value="#{repobean.kont}" id="kont" label="Payer" style="width:230px;"/>
    <rich:suggestionbox onobjectchange="printObjectsSelected(#{rich:element('konta-id')}, #{rich:component('konta-suggest')}, 'id');" usingSuggestObjects="true" width="230" var="result" fetchValue="#{result.kont}" suggestionAction="#{kontabean.suggest}" id="konta-suggest" for="kont">
                                    <h:column>
                                        <h:outputText value="#{result.kont}"/>
                                    </h:column>
                                    <h:column>
                                        <h:outputText value="#{result.kontName}"/>
                                    </h:column>
                                </rich:suggestionbox>
<h:inputHidden id="konta-id" value="#{repobean.kontId}" />

onobjectchange中的Javascript是一个将id打印到konta-id。

的函数

第二页上的jsp代码是从第一页复制粘贴的。

4 个答案:

答案 0 :(得分:2)

我知道,这个问题是5年了,但是我们有同样的错误(使用不同的组件)

在我们的案例中,我们已将外部ui:repeat更改为a4j:repeat。 之后,我们的组件按预期工作。

答案 1 :(得分:1)

当您遇到Ajax问题时,您可以做的是添加<a4j:log>组件:

<a4j:log popup="false"/>

这将在您的页面中创建一个包含Richfaces的所有Ajax日志的框。最后,您可以设置popup="true",然后按 Ctrl + Shift + L

显示弹出窗口

此面板中有许多日志,但通常需要注意的重要事项是WARN或ERROR消息。

关于您的错误消息的其他问题:它正在讨论一些ajaxSingle处理。在您的JSF代码中,您没有定义ajaxSingle属性。这个错误什么时候发生?当您开始在inputText组件中键入一些字符时?

答案 2 :(得分:1)

这个输入和建议组件周围是否有任何条件渲染(rendered="#{some expression}")?还是一次迭代?

在此错误之前是否会调用.suggest()操作?

当一个与动作相关的(导致)组件在条件渲染(或迭代)中不允许在RestoreView阶段创建组件时,就会发生这样的情况。然后根本不调用action,并且在组件树中找不到component-id。

示例:如果你有这样的东西:

<h:panelGroup rendered="#{not empty myBean.valueSetInActionHandler}">
  <h:commandLink id="action1" action="#{myBean.callOtherAction" value="appears after action"/>
</h:panelGroup>
<h:commandLink id="action2" action="#{myBean.setValueInActionHandler}" value="display button above"/>

首先渲染 - 仅渲染一个第二个按钮。如果setValueInActionHandler设置了一些值并显示相同的页面 - 第一个按钮(“动作后出现”)也将被渲染。但点击它不会触发callOtherAction - 因为在第二次请求时,在RestorePhase期间,valueInActionHandler再次为空,因此action1将不可用...

希望我设法让自己明确:)

答案 3 :(得分:-2)

我认为页面上缺少a4j taglib。