首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用素数面扩展的Dynaform时遇到的问题- jSF

使用素数面扩展的Dynaform时遇到的问题- jSF
EN

Stack Overflow用户
提问于 2012-09-13 10:54:14
回答 3查看 3.7K关注 0票数 2

在集成素数面.扩展的动态形状时,我会收到以下错误

代码语言:javascript
复制
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看起来像

代码语言:javascript
复制
<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>

更新

在更新一些代码后获得以下错误:

代码语言:javascript
复制
javax.servlet.ServletException: Cannot find component with identifier "_mainForm_dynaFormGroup" referenced from "j_idt7:dynaForm:j_idt14".

我遗漏了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-13 13:00:45

在更新一些代码后获得以下错误: javax.servlet.ServletException:找不到从"j_idt7:dynaForm:j_idt14“引用的标识符"_mainForm_dynaFormGroup”的组件。 我遗漏了什么?

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

例如,拥有这个JSF:

代码语言:javascript
复制
<h:form id="form">
    <div id="div" ...
</h:form>

将生成此HTML:

代码语言:javascript
复制
<form id="form">
    <div id="form:div" ...
</form>

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

代码语言:javascript
复制
<h:form id="buttonForm">
    <p:button id="button" ...
</h:form>
<h:form>
    <p:button update=":buttonForm:button" ...
</h:form>
票数 2
EN

Stack Overflow用户

发布于 2012-10-07 22:05:17

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

代码语言:javascript
复制
  <context-param>
      <param-name>javax.faces.SEPARATOR_CHAR</param-name>
      <param-value>_</param-value>
  </context-param>

此外,您还必须确保您正在查找的小部件驻留在给定的表单名称中。

票数 1
EN

Stack Overflow用户

发布于 2013-04-17 06:19:36

这是一个直截了当的答案,初学者可能会发现它很容易。根据您的异常"javax.servlet.ServletException: Cannot find component with identifier "_mainForm_dynaFormGroup" referenced from "j_idt7:dynaForm:j_idt14"",您指的是来自dynaForm的_mainForm_dynaFormGroup而不是dynaFormGroup,因为dynaform不在任何容器中。

这里还有一个例子,Cannot find component with identifier "_mainForm_dynaFormGroup" referenced from "A4759:projectTab:dynaForm:j_idt581".,我指的是来自_projectTab_dynaForm insted of _mainForm_dynaForm_mainForm_dynaFormGroup,它必须是_projectTab_dynaFormGroup。以上@siebz0r很好地解释了这背后的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12404643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档