2

集成primefaces-extensions dynaform时出现以下错误

java.lang.NullPointerException
        at org.primefaces.extensions.component.dynaform.DynaFormRenderer.preRenderLabel(DynaFormRenderer.java:280)
 at org.primefaces.extensions.component.dynaform.DynaFormRenderer.encodeMarkup(DynaFormRenderer.java:99)
        at org.primefaces.extensions.component.dynaform.DynaFormRenderer.encodeEnd(DynaFormRenderer.java:78)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)

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

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

我错过了什么?

4

3 回答 3

2

更新一些代码后出现以下错误:

javax.servlet.ServletException: Cannot find component with identifier "_mainForm_dynaFormGroup" referenced from "j_idt7:dynaForm:j_idt14".

我错过了什么?

正如消息所述,您正在引用具有 id 的元素_mainForm_dynaFormGroup。找不到此元素。此问题的常见原因是该元素位于表单或其他容器中,该容器以容器的 id 作为元素 id 的前缀。

例如有这个 JSF:

<h:form id="form">
    <div id="div" ...
</h:form>

将生成此 HTML:

<form id="form">
    <div id="form:div" ...
</form>

当引用另一个容器中的元素时,您需要使用 a:作为前缀从根开始引用。

<h:form id="buttonForm">
    <p:button id="button" ...
</h:form>
<h:form>
    <p:button update=":buttonForm:button" ...
</h:form>
于 2012-09-13T13:00:45.913 回答
1

您必须将以下内容添加到您的 web.xml 中才能使用_而不是默认:的小部件匹配:

  <context-param>
      <param-name>javax.faces.SEPARATOR_CHAR</param-name>
      <param-value>_</param-value>
  </context-param>

您还必须确保您正在查找的小部件位于给定的表单名称中。

于 2012-10-07T22:05:17.077 回答
0

这是一个直截了当的答案,初学者可能会觉得很容易。根据您的例外情况"javax.servlet.ServletException: Cannot find component with identifier "_mainForm_dynaFormGroup" referenced from "j_idt7:dynaForm:j_idt14"" ,您是_mainForm_dynaFormGroup从 dynaForm 引用的,而不是dynaFormGroup因为您dynaform不在任何容器内。

这里还有一个例子Cannot find component with identifier "_mainForm_dynaFormGroup" referenced from "A4759:projectTab:dynaForm:j_idt581".这里我指_mainForm_dynaFormGroup的是_projectTab_dynaForminsted of _mainForm_dynaFormit has to be _projectTab_dynaFormGroup。@siebz0r 上面已经很好地解释了这背后的原因。

于 2013-04-17T06:19:36.593 回答