Jsf 2 使用primefaces扩展的Dynaform时出现问题-jSF
我在积分时遇到以下错误 如前所述,我的类路径中包含以下库 primefaces-3.3.1.jar primefaces-extensions-0.5.1.jar commons-lang.jar Xhtml看起来像Jsf 2 使用primefaces扩展的Dynaform时出现问题-jSF,jsf-2,primefaces,primefaces-extensions,Jsf 2,Primefaces,Primefaces Extensions,我在积分时遇到以下错误 如前所述,我的类路径中包含以下库 primefaces-3.3.1.jar primefaces-extensions-0.5.1.jar commons-lang.jar Xhtml看起来像 <ui:composition template="WEB-INF/templates/base.xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xml
<ui:composition template="WEB-INF/templates/base.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:pe="http://primefaces.org/ui/extensions">
<ui:define name="content">
<pe:dynaForm id="dynaForm" >
</pe:dynaForm>
</ui:define>
</ui:composition>
我错过了什么
更新某些代码后出现以下错误:
javax.servlet.ServletException: Cannot find component with identifier "_mainForm_dynaFormGroup" referenced from "j_idt7:dynaForm:j_idt14".
javax.servlet.ServletException: Cannot find component with identifier "_mainForm_dynaFormGroup" referenced from "j_idt7:dynaForm:j_idt14".
我错过了什么
正如消息所述,您正在引用id为\u mainForm\u dynaFormGroup
的元素。找不到此元素。此问题的一个常见原因是,该元素位于一个表单或某个其他容器中,该表单或容器以容器的id作为元素id的前缀
例如,使用此JSF:
<h:form id="form">
<div id="div" ...
</h:form>
您必须将以下内容添加到web.xml中,才能使用
\uu
而不是默认的:
进行小部件匹配:
<context-param>
<param-name>javax.faces.SEPARATOR_CHAR</param-name>
<param-value>_</param-value>
</context-param>
javax.faces.SEPARATOR_CHAR
_
此外,您还必须确保正在查找的小部件位于给定的表单名称中。这里有一个简单的答案,初学者可能会发现这很容易。 根据您的异常
“javax.servlet.ServletException:找不到标识符为“\u mainForm\u dynaFormGroup”的组件,该标识符是从“j\u idt7:dynaForm:j\u idt14”引用的。
您指的是dynaForm中的\u mainForm\u dynaFormGroup
,而不是dynaFormGroup
,因为您的dynaForm
不在任何容器内
下面是另一个示例
无法找到标识符为“\u mainForm\u dynaFormGroup”的组件,该标识符来自“A4759:projectTab:dynaForm:j\u idt581”.
这里我指的是\u mainForm\u dynaFormGroup
来自\u projectTab\u dynaForm
的\u mainForm\u dynaFormGroup
而不是\u projectTab\u dynaFormGroup
。上面@siebz0r.很好地解释了这背后的原因,如果buttonForm在某个面板中,比如说formPanel,那么它应该是:formPanel:buttonForm:button
?@mashit不,面板不是HTML“容器”元素(我不知道确切的名称)。只有表单或数据表之类的元素才会附加id;-)好啊这个表达是什么意思\u mainForm\u dynaFormGroup\u mainForm\u inputValues
Ref:问题是我无法使用\u mainForm\u dynaFormGroup\u mainForm\u inputValues。
我的页面上可能没有这些元素。但我使用的是参考页上给出的示例。@mashit您可以尝试使用绑定。看,是的,我知道元素在表单中查找的要点。谢谢你的回答。我错过了这个。我要试一试。
<form id="form">
<div id="form:div" ...
</form>
<h:form id="buttonForm">
<p:button id="button" ...
</h:form>
<h:form>
<p:button update=":buttonForm:button" ...
</h:form>
<context-param>
<param-name>javax.faces.SEPARATOR_CHAR</param-name>
<param-value>_</param-value>
</context-param>