1

JSF と IceFaces を使用してオンライン調査アプリケーションを作成しています。調査には、任意の数の質問を含めることができます。各質問は、複数のオプションを持つチェックボックス、ラジオボタン、テキストボックスなどのいずれかのタイプにすることができます。

ここで、jsf でページごとに 1 つの質問を表示する必要があります。データベースから質問タイプ、質問、オプション リスト (opt1、opt2、opt3...) のデータを取得しています。

ユーザーが前のボタンをクリックすると、前の質問に戻る必要があります。ユーザーが次のボタンをクリックすると、次の質問に進む必要があります。最後に、ユーザーが送信ボタンをクリックすると、調査データをデータベースに保存する必要があります。

質問の種類に基づいてコンポーネントをレンダリングするにはどうすればよいですか? (質問タイプがチェックボックス手段の場合、チェックボックスを表示する必要があります。質問タイプがラジオボタン手段の場合、ラジオボタンを表示する必要があります..)

これどうやってするの?誰でもこれについて私を助けてもらえますか?

このタイプの例があれば、リンクを共有してください。

4

1 に答える 1

3

属性を使用しrenderedます。属性の EL 条件が評価されるtrue場合、コンポーネントは HTML を出力にレンダリングしますが、そうでない場合はレンダリングしません。

だから、あなたが持っていると仮定すると

public class Question {

    public enum Type { 
        SINGLE, MULTIPLE;
    }

    private Long id;
    private Type type;
    private String text;
    private List<Answer> answers;

    // ...
}

その後、次のように使用できます。

<h:dataTable value="#{bean.questions}" var="question">
    <h:column>
        <h:selectOneRadio value="#{bean.answers[question.id]}" rendered="#{question.type == 'SINGLE'}">
            <f:selectItems value="#{question.answers}" />
        </h:selectOneRadio>
        <h:selectManyCheckbox value="#{bean.answers[question.id]}" rendered="#{question.type == 'MULTIPLE'}">
            <f:selectItems value="#{question.answers}" />
        </h:selectManyCheckbox>
    </h:column>
</h:dataTable>
于 2011-07-17T08:59:40.750 に答える