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)

here で説明されているように、クラスパスに次のライブラリが含まれています

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

これは、初心者が簡単に見つけることができる簡単な答えです。あなたの例外によれば、あなたはコンテナの中にいないためではなく、dynaFormから"javax.servlet.ServletException: Cannot find component with identifier "_mainForm_dynaFormGroup" referenced from "j_idt7:dynaForm:j_idt14"" 参照しています。_mainForm_dynaFormGroupdynaFormGroupdynaform

もう 1 つの例をCannot find component with identifier "_mainForm_dynaFormGroup" referenced from "A4759:projectTab:dynaForm:j_idt581".次に示します。この背後にある理由は、上記の @siebz0r によって十分に説明されています。_mainForm_dynaFormGroup_projectTab_dynaForm_mainForm_dynaForm_projectTab_dynaFormGroup

于 2013-04-17T06:19:36.593 に答える