2012-10-23 5 views
0

계속해서 동일한 예외가 계속 발생합니다. "# {choiceRadio.clientId}"에 대해 이없는 예외 및 hmtl 출력을 비교하면은 바인딩이 작동한다고 알리는 것 같습니다. 그러나 그것은 단지하지 않으며 나는 거대한 무언가를 놓치고있는 것처럼 느낍니다.JSF & Primefaces : 구성 요소 ID를 찾을 수 없습니다.

강령 :

<p:selectOneRadio binding="#{choiceRadio}" value="#" layout="custom"> 
     <f:selectItems value="#" /> 
    </p:selectOneRadio> 

    <h:panelGrid columns="1"> 
     <ui:repeat var='choice' value='#{item.items3}'> 
      <p:radioButton for="#{choiceRadio.clientId}" />#{choice.name} 
     </ui:repeat> 
    </h:panelGrid> 

</h:form> 

예외 :

UI없이
HTTP Status 500 - 

type Exception report 

message 

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Cannot find component 'j_idt34:0:j_idt36:2:j_idt46:j_idt82' in view. 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606) 
    org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) 
root cause 

javax.faces.FacesException: Cannot find component 'j_idt34:0:j_idt36:2:j_idt46:j_idt82' in view. 
    org.primefaces.component.radiobutton.RadioButtonRenderer.findSelectOneRadio(RadioButtonRenderer.java:126) 
    org.primefaces.component.radiobutton.RadioButtonRenderer.encodeEnd(RadioButtonRenderer.java:35) 
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) 
    com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:104) 
    com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:523) 
    com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:984) 
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304) 
    com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185) 
    com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129) 
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) 
    javax.faces.render.Renderer.encodeChildren(Renderer.java:168) 
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304) 
    com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105) 
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304) 
    com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105) 
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) 
    org.primefaces.component.lightbox.LightBoxRenderer.encodeMarkup(LightBoxRenderer.java:52) 
    org.primefaces.component.lightbox.LightBoxRenderer.encodeEnd(LightBoxRenderer.java:32) 
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59) 
    org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43) 
    org.primefaces.component.outputpanel.OutputPanelRenderer.encodeEnd(OutputPanelRenderer.java:46) 
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) 
    com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:104) 
    com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:523) 
    com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:984) 
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304) 
    com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105) 
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
    org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55) 
    org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43) 
    org.primefaces.component.outputpanel.OutputPanelRenderer.encodeEnd(OutputPanelRenderer.java:46) 
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) 
    com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:104) 
    com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:523) 
    com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:984) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) 
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125) 
    javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
    org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) 
note The full stack trace of the root cause is available in the JBoss Web/7.0.13.Final logs. 

JBoss Web/7.0.13.Final 

: 나는 예외하지만 UI없이 얻을하지 않습니다 반복 : 어떤 내용이없는 반복 중 하나

<p:selectOneRadio id="myRadio" value="#{cartBean.selectedChoice}" layout="custom"> 
     <f:selectItems value="#{item.items3}" /> 
    </p:selectOneRadio> 

    <h:panelGrid columns="1"> 

      <p:radioButton for="myRadio" value="hh" itemIndex="0"/> 

    </h:panelGrid> 

</h:form> 
+0

가능한 복제본은 http://stackoverflow.com/questions/8634156/how-to-reference-components-in-jsf-ajax-cannot-find-component-with-identifier – perissf

+0

입니다. 이전에 읽은 질문/답변 중 하나였습니다. 어쩌면 나는 그것이 실제로 나를 도울 수 없기 때문에 나는 정말로 이해하지 못했다. – Lester

답변

2

for e radioButtonid이어야합니다 (selectOneRadio).

버튼에에 id 당신의 selectOneRadio에 추가 참조 :

<p:selectOneRadio id="myRadio" binding="#{choiceRadio}" value="#" layout="custom"> 
    <f:selectItems value="#" /> 
</p:selectOneRadio> 

<h:panelGrid columns="1"> 
    <ui:repeat var='choice' value='#{item.items3}'> 
     <p:radioButton for="myRadio" />#{choice.name} 
    </ui:repeat> 
</h:panelGrid> 

편집

당신은 요소 id 전에 ViewRoot에서 모든 NamingContainer의 권리의 ID를 앞에 추가해야 할 수도 있습니다 예 : for="form_id:myRadio"

의심 요소의 정확한 절대 id이 될 일을, 방화 광 (파이어 폭스) 또는 개발자 도구 (크롬)에서 보거나 검색 할 때의 id 주어진 html로 출력 (이 경우 "myRadio"에서) 소스를 건너 뛰고 가능한 숫자를 건너 뜁니다.

그래서이

id="iterateCategories:0:iterateItems:2:lightForm:radioForm"

은 절대 ID로

iterateCategories:iterateItems:lightForm:radioForm

이 될 것입니다.

+0

답장을 보내 주셔서 감사합니다.하지만이 작업은 매우 유사합니다. _javax.servlet.ServletException : view._에서 'myRadio'구성 요소를 찾을 수 없습니다. 그게 내가 시작한 곳입니다 ... – Lester

+0

@Lester - 그럼 폼 ID 앞에도 추가해야합니다. 내가 대답을 – kostja

+0

일부 HTML을 (p : radiobutton 및 따라서없이)없이 생성 된 HTML에서 ID : "j_idt34 : 0 : j_idt36 : 2 : form_id

관련 문제