发现奇怪的问题,可能是错误。
我有两个与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代码是从第一页复制粘贴的。
答案 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。