Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 使用primefaces扩展的Dynaform时出现问题-jSF_Jsf 2_Primefaces_Primefaces Extensions - Fatal编程技术网

Jsf 2 使用primefaces扩展的Dynaform时出现问题-jSF

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

我在积分时遇到以下错误

如前所述,我的类路径中包含以下库

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"
 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>