0

同じ例外を何度も受け取り続けます。for="#{choiceRadio.clientId}"なしで例外と hmtl-output を比較すると、バインディングが機能していることがわかります。しかし、そうではなく、何か大きなものを失っているように感じます.

コード:

    <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>

例外:

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:repeat がなければ例外は発生しませんが、ui:repeat がなければコンテンツもありません:

    <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>
4

1 に答える 1

2

for属性は、それが参照するradioButtonの でなければなりません。idselectOneRadio

を追加しidselectOneRadio、ボタンで参照します。

<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>

編集

次のように、すべてNamingContainerの s のid をViewRootelement の直前に追加する必要がある場合があります。idfor="form_id:myRadio"

要素の正確な絶対値idが不明な場合は、FireBug (Firefox) または開発者ツール (Chrome) で調べるかid、HTML 出力ソースで指定された (この場合は「myRadio」) を検索し、可能な数字をスキップします。 -の間に。

したがって、この

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

になるだろう

iterateCategories:iterateItems:lightForm:radioForm

あなたの絶対IDとして。

于 2012-10-23T10:38:00.573 に答える