Ошибка дублирующегося идентификатора при использовании пользовательского компонента в JSF1.1 с DataTable - PullRequest
1 голос
/ 05 мая 2011

Я получаю следующую ошибку при попытке вернуться на ту же страницу без перенаправления.

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: java.lang.IllegalStateException: Duplicate component ID '_id20' found in view.
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:527)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346)
    com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: java.lang.IllegalStateException: Duplicate component ID '_id20' found in view.
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    org.apache.jsp.view_005fneed_jsp._jspService(view_005fneed_jsp.java:556)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346)
    com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
root cause

java.lang.IllegalStateException: Duplicate component ID '_id20' found in view.
    com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:201)
    com.sun.faces.application.StateManagerImpl.checkIdUniqueness(StateManagerImpl.java:204)
    com.sun.faces.application.StateManagerImpl.saveSerializedView(StateManagerImpl.java:97)
    com.sun.faces.taglib.jsf_core.ViewTag.doAfterBody(ViewTag.java:189)
    org.apache.jsp.view_005fneed_jsp._jspx_meth_f_005fview_005f0(view_005fneed_jsp.java:741)
    org.apache.jsp.view_005fneed_jsp._jspService(view_005fneed_jsp.java:546)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346)
    com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)

У меня есть пользовательский компонент, который просто отображает HTML внутри DataTable вместе с ah: form (также внутрис данными).

Мой компонент - это компонент уровня запроса, а версия JSF - Версия реализации: 1.1_02-b08

[ПРАВИТЬ] Мой пользовательский компонент находится внутриЯ думаю, что это создает проблему. Также на странице нет действия Ajax.

Мой jsp выглядит следующим образом ..

<h:datatable>
<h:column>
<ch:activity name="#{need.name}" />

</h:column>

Где CH: activity - пользовательский компонент

1 Ответ

1 голос
/ 05 мая 2011

Эти _idxx идентификаторы генерируются, и, возможно, в вашем пользовательском компоненте есть какая-то ошибка. Как правило, вы должны назначать каждому компоненту собственный идентификатор, поскольку в противном случае функции AJAX могут работать некорректно - если вы их используете.

Не могли бы вы опубликовать свой JSP / XHTML?
Можете ли вы проверить, что ваш рендерер (его пользовательский, верно?) Не отображает один и тот же идентификатор дважды?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...