JSFでは、入力フィールドのいずれかで変換が失敗した場合、どのようにメソッドを呼び出すことができますか? 私は自分のコンバーターを書いてそこですべてのことを行うことができると思いますが、もっと簡単な方法はありませんか?
質問する
170 次
1 に答える
2
リスナーを使用してPreRenderViewEvent
、そのメソッドで検証が失敗したかどうかを確認できます。このリスナー メソッドは、ビューがレンダリングされる直前に毎回呼び出されます。
例えば
次の Facelet を検討してください。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<h:messages/>
<f:event listener="#{onErrorBean.onPreRenderView}" type="preRenderView" />
<h:form>
<h:inputText value="#{onErrorBean.test}" label="test" required="true" />
<h:commandButton value="Submit" action="#{onErrorBean.onSuccess}" />
</h:form>
</h:body>
</html>
そして、次のバッキング Bean:
@ViewScoped
@ManagedBean
public class OnErrorBean {
private String test;
public void onPreRenderView() {
if (FacesContext.getCurrentInstance().isValidationFailed()) {
onError();
}
}
public void onSuccess() {
System.out.println("Success!");
}
public void onError() {
System.out.println("Error!");
}
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
}
値を入力せずにボタンを押すと、「Error!」と表示されます。コンソールに出力されたら、値を入力すると「成功!」と表示されます。
于 2012-07-04T09:05:48.897 に答える