0

次の表でJSFを使用してWebページを作成したいと思います。

Item 1 | ( ) good ( ) ok ( ) bad
Item 2 | ( ) good ( ) ok ( ) bad
Item 3 | ( ) good ( ) ok ( ) bad
[…]

ラジオボタンをチェックした後、すぐに評価を送信して処理したいと思います。dataTableの現在のコードは次のようになります。

<h:dataTable value="#{bean.list}" var="item">
    <h:column>
        <h:outputText value="#{item.title}"/>
    </h:column>
    <h:column>
        <h:form>
        <h:selectOneRadio id="rate" value="#{bean.rate}">
            <f:selectItem itemValue="1" itemLabel="good" />
            <f:selectItem itemValue="0" itemLabel="ok" />
            <f:selectItem itemValue="-1" itemLabel="bad" />
            <f:ajax event="click" execute="rate" />
        </h:selectOneRadio>
        </h:form>
    </h:column>
</h:dataTable>

私が現在直面している問題:どのアイテムが実際に評価されたかを判断する必要があります。誰かが私にこれを達成する方法のヒントを教えてもらえますか?

4

2 に答える 2

1

いくつかのテクニックから選択できます。たとえば、MapBeanでを使用できます <h:selectOneRadio value="#{bean.ratePerItem[item]}"

Map<ItemClass, Integer> ratePerItem;

そうすれば、値を探してマップをウォークスルーする必要があります。ニーズに合わせたより簡単なアプローチはh:inputHidden、アイテムを保存するを使用することです。

または、多分もっと良いですf:setPropertyActionListener。それはあなたが正確に何を望んでいるかによります。

于 2012-09-18T14:12:02.793 に答える
0

Itemクラスに「rate」プロパティを追加すると、どのItemが評価されているかを簡単に判断するのに役立ちます。

<h:selectOneRadio id="rate" value="#{bean.rate}"
            <f:selectItem itemValue="1" itemLabel="good" />
            <f:selectItem itemValue="0" itemLabel="ok" />
            <f:selectItem itemValue="-1" itemLabel="bad" />
            <f:ajax event="click" execute="rate" />
        </h:selectOneRadio>

上記のコードを次のように変更します

<h:selectOneRadio id="rate" value="#{item.rate}">
            <f:selectItem itemValue="1" itemLabel="good" />
            <f:selectItem itemValue="0" itemLabel="ok" />
            <f:selectItem itemValue="-1" itemLabel="bad" />
            <f:ajax event="click" execute="rate" />
        </h:selectOneRadio>
于 2012-09-19T09:09:05.500 に答える