내 JSF 페이지에서 임의로 중복 ID 오류가 발생하며 모든 인스턴스에서 복제 된 ID는 자동 생성 된 ID입니다 (예 : j_id15).자동 생성 JSF 구성 요소 ID의 중복 ID
페이지의 지정된 ID에 중복 된 항목이 없습니다. 그리고 문제는 일관성이 없습니다. 즉, 페이지 뷰에서 중복 ID 오류가 발생할 수 있으며 다음 번에 같은 페이지에 대한 요청을 보내면 오류없이 잘 실행됩니다. 그리고 이것은 하나의 페이지에만 국한된 것은 아니며, 동일한 문제가있는 프로젝트의 여러 페이지가 있습니다.
문제
는에서 MyFaces에 2.0.5 2.0.14 (최신 커널 2.0.x 버전)이가에서 MyFaces 구현의 버그에서 MyFaces에서 업그레이드 한 후 보여주는 시작? 아니면 내가 잘못하고있는거야? 나는에서 MyFaces는 기본적으로 자동 생성 된 ID의 중복을 확인 안됩니다 실현,
Caused by: java.lang.IllegalStateException: Client-id : j_id15 is duplicated in the faces tree. Component : posSelectionFrm:posSelSubview_first:posHasAccessTable:j_id15, path: ...[Class: javax.faces.component.UINamingContainer,Id: posSelSubview_first][Class: javax.faces.component.html.HtmlDataTable,Id: posHasAccessTable][Class: javax.faces.component.UIColumn,Id: titleColumn2][Class: com.sun.facelets.compiler.UIInstructions,Id: j_id15]}
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:280)
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:302)
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:302)
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:302)
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:302)
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:302)
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:302)
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:302)
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:302)
at org.apache.myfaces.application.StateManagerImpl.checkForDuplicateIds(StateManagerImpl.java:302)
at org.apache.myfaces.application.StateManagerImpl.saveView(StateManagerImpl.java:220)
at javax.faces.application.StateManager.saveSerializedView(StateManager.java:113)
at javax.faces.application.StateManagerWrapper.saveSerializedView(StateManagerWrapper.java:41)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:617)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
... 71 more
을 그리고 :
스택 추적은 다음과 같습니다. 하지만 확실히하기 위해 web.xml에서 다음 설정을 정의했습니다.
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.CHECK_ID_PRODUCTION_MODE</param-name>
<param-value>false</param-value>
</context-param>
그러나 문제는 여전히 지속됩니다.
프로젝트는 Tomcat 6.0에서 실행되는 Apache MyFaces 2.0.14, Facelets 1.1.15, RichFaces 3.3.3.Final을 사용합니다.
페이지에서 사용한 모든 구성 요소에 대해 ID를 제공하는 것이 좋습니다. –