0

この JSF2 検証エラーに関する多くの投稿を読みましたが、なぜこれが発生しているのかわかりません。私の選択項目は、ListItem が 2 つの文字列フィールド、キー、および値を持つ POJO であるリストです。「0」の値を持つ項目選択オプションを選択してページを送信すると、次のエラーが表示されます: 検証エラー: 値が無効です。

送信される値は int にバインドされます。これは ListItem の equals メソッドですが、このメソッドにデバッグ ポイントがあり、ヒットしていないように見えるため、これが問題かどうかはわかりません。

public boolean equals(Object other)
{
    if (other == null || !(other instanceof ListItem))
        return false;
    ListItem otherLI = (ListItem) other;
    return otherLI.key.equals(key);
}

何か案は?

4

1 に答える 1

0

UISelectOne validateValue メソッドでデバッグを行った後に修正されたようで、送信された値が 0 の整数オブジェクトである場合に SelectUtils.valueIsNoSelectionOption が true を返しているように見えました。

私の noSelectionOption は次のとおりです。

<f:selectItem noSelectionOption="true" itemLabel="Please Select" itemValue="" />

itemValue を #{null} に変更すると、問題なく動作するようです。

<f:selectItem noSelectionOption="true" itemLabel="Please Select" itemValue="#{null}" />
于 2013-07-25T09:23:50.863 に答える