私はJSFの新機能ですが、検証が失敗した後にJSFがフォームでどのような値をレンダリングするのか分かりません。私はWebSphere 7とそのJSF、MyFaces(私は2.0と思う)のデフォルトの実装を使用しています。私はいくつかのテキストと<h:inputText />
を埋めるJSF 1.2 empty <h:selectManyListbox />検証の問題
public class Backing {
private String text;
private String[] options;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String[] getOptions() {
return options;
}
public void setOptions(String[] options) {
this.options = options;
}
}
- :
<h:form id="form"> <h:inputText id="text" value="#{backing.text}" required="true"/> <h:message for="text" /> <h:selectManyListbox id="options" value="#{backing.options}" required="true"> <f:selectItem itemLabel="1" itemValue="1" /> <f:selectItem itemLabel="2" itemValue="2" /> <f:selectItem itemLabel="3" itemValue="3" /> </h:selectManyListbox> <h:message for="options" /> <h:commandButton value="Save" /> </h:form>
そして、このように私のバッキングBean:
私のXHTMLは、このようになります。私は、フォームが、私は
<h:inputText />
に入力された値で、私は<h:selectManyListbox />
上で選択したオプションを使用してレンダリングされる(無検証メッセージは、表示されません - 「保存」ボタンを押してください
<h:selectManyListbox />
- から2つのオプションが選択
- 今...
- )予想通り、私は私が押し
<h:selectManyListbox />
- から2つのオプションが選択解除
<h:inputText />
- を空にする「保存」ボタンが
- フォームが空
<h:inputText />
をレンダリングし、私が選択した前のオプションと<h:selectManyListbox />
(予想通り、両方の検証メッセージが示されている)
あなたが見ることができるように、行動<h:inputText />
をレンダリングするときそして<h:selectManyListbox />
は異なります
<h:inputText />
は、コンポーネントの送信された値<h:selectManyListbox />
は、Beanの値をレンダリングレンダリング
<h:selectManyListbox />
レンダリングしようとしましたが、ハッキングやコードの混乱を招くことなく選択肢が選択されていませんでしたが、運がありませんでした。
¿これはいくつかのバグですか?私は何かを逃していますか?
他のフォームを作成中に、テキスト入力それが日付に変換されました。これを、web.xmlでjavax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULLをtrueに設定して修正しました。しかし、これを行うことで、日付テキスト入力の問題を修正することしかできませんでした.h:selectManyListboxの動作は同じ方法です。 – Gabriel
'h:selectOneMenu'で同じ動作が検出されました – Gabriel