2012-08-06 2 views
1

내 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을 사용합니다.

+0

페이지에서 사용한 모든 구성 요소에 대해 ID를 제공하는 것이 좋습니다. –

답변

0

web.xml 파일이 서로 충돌하여 정의 된 여러 필터의 문제점. RichFaces 필터가 web.xml 구성 파일의 다른 필터 중 첫 번째 필터 여야 함을 확인하십시오.

+0

아니요, richfaces 필터가 첫 번째입니다 (인코딩을 설정하거나 로그 메시지를 생성하는 것과 같이 특별한 작업을 수행하지 않는 자체 필터 이후) – Iravanchi