h:form和p:ajax(Mojarra 2.0.2和Primefaces 2.0.2)的问题
我有这个网站:h:form和p:ajax(Mojarra 2.0.2和Primefaces 2.0.2)的问题,ajax,jsf,jsf-2,primefaces,mojarra,Ajax,Jsf,Jsf 2,Primefaces,Mojarra,我有这个网站: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="ht
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head></h:head>
<h:body>
<h:form id="form-some">
<h:inputText id="copingFilePhaseFocus">
<p:ajax event="focus" actionListener="#{installationController.startCopyingWarFile}" />
</h:inputText>
</h:form>
</h:body>
</html>
此代码在MyFaces2.0.0下工作。但在MyFaces2.0.2或Mojarra 2.0.2下,情况并非如此。
通过告诉“不工作”,我的意思是单击(聚焦)输入文本不会触发actionListener(文本“已启动”不会出现在标准输出上)。
有人有类似的问题吗
编辑1(将p:ajax更改为f:ajax后):
#{msg['installPlugin.copyingwarddescription']}
(...)
错误是:
javax.faces.FacesException:
包含未知id
“copingFilePhase”-找不到它
在组件的上下文中
复制文件相位焦点
这可能有两个原因:
web.xml
中手动配置它:
<servlet>
<servlet-name>PrimeFaces Resource Servlet</servlet-name>
<servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PrimeFaces Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
与
其中
AjaxBehaviorEvent
是javax.faces.event.AjaxBehaviorEvent
,这可能有两个原因:
web.xml
中手动配置它:
<servlet>
<servlet-name>PrimeFaces Resource Servlet</servlet-name>
<servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PrimeFaces Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
与
其中
AjaxBehaviorEvent
是javax.faces.event.AjaxBehaviorEvent
广告1:我在web.xml文件中找到了适当的条目。广告2:这也不是问题。我正在导入javax.faces.event.ActionEvent,我的日志文件中没有关于错误的条目。f:ajax似乎工作正常。但是在f:ajax中,不是“update”属性,而是“render”。“渲染”可以渲染其h:form组件之外的组件吗?我有一个找不到组件“copingFilePhase”的错误。我将在我的原始问题中附加代码(编辑:附加代码)。你能写一个例子吗?我不太明白你的建议;)呈现
相对于当前的UINamingContainer
父对象(在您的情况下,它是
,另请参见生成的HTML输出)。如果您以:
作为前缀,它将是根的绝对值。因此,在您的特定情况下:render=“:copingFilePhase:actainingplugininformationphase”
我以完全相反的方式理解您,并键入render=“copingFilePhase:actainingplugininformationphase:”。您的解决方案确实有所帮助;)再次非常感谢。但我还有一个问题。您知道当一个ajax调用返回时调用某个异步方法(通过ajax)的方法吗?我指的是一连串的祈祷。我的代码中有相当有趣的黑客行为。我调用一些方法,当它返回时,更改一些渲染标志并更新一些组件。在这种情况下,组件为一些通过ajax调用另一个方法的隐藏输入表单(style=“display:none”)设置焦点。最好的方法是指定组件parentForm:parentUI:toUpdateUIAd的路径。1:我的web.xml文件中有适当的条目。广告2:这也不是问题。我正在导入javax.faces.event.ActionEvent,我的日志文件中没有关于错误的条目。f:ajax似乎工作正常。但是在f:ajax中,不是“update”属性,而是“render”。“渲染”可以渲染其h:form组件之外的组件吗?我有一个找不到组件“copingFilePhase”的错误。我将在我的原始问题中附加代码(编辑:附加代码)。你能写一个例子吗?我不太明白你的建议;)呈现
相对于当前的UINamingContainer
父对象(在您的情况下,它是
,另请参见生成的HTML输出)。如果您以:
作为前缀,它将是根的绝对值。因此,在您的特定情况下:render=“:copingFilePhase:actainingplugininformationphase”
我以完全相反的方式理解您,并键入render=“copingFilePhase:actainingplugininformationphase:”。您的解决方案确实有所帮助;)再次非常感谢。但我还有一个问题。您知道当一个ajax调用返回时调用某个异步方法(通过ajax)的方法吗?我指的是一连串的祈祷。我的代码中有相当有趣的黑客行为。我调用一些方法,当它返回时,更改一些渲染标志并更新一些组件。在这种情况下,组件为一些通过ajax调用另一个方法的隐藏输入表单(style=“display:none”)设置焦点。最好的方法是指定组件parentForm:parentUI:toUpdateUI的路径
<servlet>
<servlet-name>PrimeFaces Resource Servlet</servlet-name>
<servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PrimeFaces Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
<f:ajax event="focus" listener="#{installationController.startCopyingWarFile}" />
public void startCopyingWarFile(AjaxBehaviorEvent event) {
// ...
}