0

Primefacesレイアウトコンポーネントを使用していますが、埋め込み形式のコンポーネントで問題が発生しています。

<p:selectOneRadio id="customRadio" 
                    value="#{exams.examQuestions.currentQuestion.selectedAnswer}"
                    layout="custom">

<f:selectItem itemLabel="Option1" 
                    itemValue="#{exams.examQuestions.currentQuestion.examentry.answer1}"
                    rendered="#{exams.examQuestions.currentQuestion.render_question1}"/>

    <f:selectItem itemLabel="Option2" 
                    itemValue="#{exams.examQuestions.currentQuestion.examentry.answer2}"
                    rendered="#{exams.examQuestions.currentQuestion.render_question2}"/>

    <f:selectItem itemLabel="Option3" 
                    itemValue="#{exams.examQuestions.currentQuestion.examentry.answer3}"
                    rendered="#{exams.examQuestions.currentQuestion.render_question3}"/>

    <f:selectItem itemLabel="Option4" 
                    itemValue="#{exams.examQuestions.currentQuestion.examentry.answer4}"
                    rendered="#{exams.examQuestions.currentQuestion.render_question4}"/>

    <f:selectItem itemLabel="Option5" 
                    itemValue="#{exams.examQuestions.currentQuestion.examentry.answer5}"
                    rendered="#{exams.examQuestions.currentQuestion.render_question5}"/>

    <h:panelGrid columns="1">  
    <p:radioButton id="opt1"
        for="customRadio"
        itemIndex="0"
        rendered="#{exams.examQuestions.currentQuestion.render_question1}"/>  
    <h:outputLabel for="opt1"
        value="#{exams.examQuestions.currentQuestion.examentry.answer1}"
        rendered="#{exams.examQuestions.currentQuestion.render_question1}"/>
    <br/>
    <p:radioButton id="opt2" for="customRadio" 
        itemIndex="1"
        rendered="#{exams.examQuestions.currentQuestion.render_question2}"/>  
    <h:outputLabel for="opt2" 
        value="#{exams.examQuestions.currentQuestion.examentry.answer2}"
        rendered="#{exams.examQuestions.currentQuestion.render_question2}"/>
    <br/>
    <p:radioButton id="opt3" 
        for="customRadio" 
        itemIndex="2"
        rendered="#{exams.examQuestions.currentQuestion.render_question3}"/> 
    <h:outputLabel for="opt3" 
        value="#{exams.examQuestions.currentQuestion.examentry.answer3}"
        rendered="#{exams.examQuestions.currentQuestion.render_question3}"/>
    <br/>
    <p:radioButton id="opt4" 
        for="customRadio" 
        itemIndex="3"
        rendered="#{exams.examQuestions.currentQuestion.render_question4}"/>
    <h:outputLabel for="opt4" 
        value="#{exams.examQuestions.currentQuestion.examentry.answer4}"
        rendered="#{exams.examQuestions.currentQuestion.render_question4}"/>
    <br/>
    <p:radioButton id="opt5" 
        for="customRadio" 
        itemIndex="4"
        rendered="#{exams.examQuestions.currentQuestion.render_question5}"/> 
    <h:outputLabel for="opt5" 
        value="#{exams.examQuestions.currentQuestion.examentry.answer5}"
        rendered="#{exams.examQuestions.currentQuestion.render_question5}"/>
    </p:selectOneRadio>

別のアイテムを選択しても、バッキングBean Exams.examQuestions.currentQuestion.selectedAnswerが更新されないのはなぜですか?このコンポーネントの更新を同じフォームから「customRadio」と呼ぶと、バッキングBeanはそれ自体を更新しますが、フォームの外でこれを行うことはできません。助けてください!

4

1 に答える 1

0

正確に何が必要かはわかりませんが(サンプルコードにフォームが表示されないため)、最後のf:selectItemの後にp:selectOneRadioを閉じないことが問題だと思います。 。

PrimefacesのショーケースselectOneRadioを詳しく見てください

また、別のフォームからコンポーネントを更新する場合は、次のように更新を呼び出します。update=":formIdOfComponent:componentID"

于 2012-04-09T23:31:02.083 に答える