抱歉问题标题,但我想不出更好的标题。
我正在使用 JSF 2.0 (MyFaces 2.0.2) 并将 RichFaces 4 (4.0.0.20101004-M3) 添加到我的项目中。我找到了 RichFaces 4 (http://java.sys-con.com/node/1098139) 的示例,并使用以下代码创建了一个 xhtml 页面:
<ui:define name="webpage_main_body">
<h:form>
<h:panelGrid columns="2">
<h:outputText value="Text:" />
<h:inputText value="#{echoBean.text}">
<a4j:ajax event="keyup" render="text,count"
listener="#{echoBean.countListener}" />
</h:inputText>
<h:outputText value="Echo:" />
<h:outputText id="text" value="#{echoBean.text}" />
<h:outputText value="Count:" />
<h:outputText id="count" value="#{echoBean.count}" />
</h:panelGrid>
</h:form>
</ui:define>
由于这是一个 Facelets 页面,它使用一个定义标题(包括徽标和主导航)的模板。
如果我在浏览器中打开页面,它会正确呈现。输入框生成的HTML代码如下:
<input type="text"
onkeyup="RichFaces.ajax("j_id1176210999_514e0f6c:j_id1176210999_514e0fad",event,{"parameters":{"javax.faces.behavior.event":"keyup"} } )" value="" name="j_id1176210999_514e0f6c:j_id1176210999_514e0fad" id="j_id1176210999_514e0f6c:j_id1176210999_514e0fad">
问题是,如果我在文本框中输入一些内容,它应该使用名为“RichFaces.ajax(...)”的 Javascript 函数在每个键上触发一个 ajax-reqest。但是,每次触发事件时,Firefox 错误控制台都会打印一个错误:
Error: RichFaces is not defined
Source File: http://localhost:8080/project/richEchoTest.xhtml
Line: 1
对于我的问题:有没有人知道这个 RichFaces-Javascript-Object 是在哪里定义的?或者有什么我必须包含在 xhtml 页面中的吗?我只包含了“xmlns:a4j="http://richfaces.org/a4j”,我是否也必须添加“xmlns:rich....”?
在此先感谢,我真的很感激任何帮助,因为我已经浪费了 3 天的时间来研究这个问题。
//编辑:我忘了提到如果我使用内置的 jsf2 ajax-tag 它就像一个魅力:
<f:ajax event="keyup" execute="@form" render="text count"
listener="#{echoBean.countListener}" />