我希望我的面板保持可見狀態,當我點擊命令按鈕並且執行的方法調用錯誤消息時。防止rich:popupPanel點擊命令按鈕後關閉
更具體地說,我有一個輸入字段的驗證器,它應該會得到一個日期。如果這個日期無效,我的支持bean中的validate方法會創建一條錯誤消息。這應該顯示在使用命令按鈕後彈出面板中的輸入字段旁邊。
點擊命令按鈕關閉彈出窗口。但是如果我重新打開它,會顯示錯誤消息,這讓我不知道爲什麼它在第一時間關閉,而最大嚴重性條件未得到滿足。
我的XHTML頁面:在支持Bean
<h:body>
<h:commandButton id="note" value="Neuer Satz">
<rich:componentControl target="note_panel" operation="show" />
</h:commandButton>
<rich:popupPanel id="note_panel" modal="true" autosized="true"
resizeable="false" header="Neuen Mehrwertsteuersatz vormerken"
domElementAttachment="form">
Gültig ab
<h:inputText id="newVorGueltigAb"
value="#{mehrwertsteuerBean.neuGueltigAb}" maxlength="10"
validator="#{mehrwertsteuerBean.validateNewDate}" />
<h:message for="newVorGueltigAb" style="color:red" />
<h:commandButton value="Vormerken"
action="#{mehrwertsteuerBean.addSteuersatz()}"
oncomplete="if (#{facesContext.maximumSeverity==null})
#{rich:component('note_panel')}.hide(); return false;" />
<h:commandButton value="Abbrechen"
onclick="#{rich:component('note_panel')}.hide(); return false;" />
</rich:popupPanel>
</h:body>
我的驗證方法:
所有的public void validateNewDate(FacesContext context, UIComponent toValidate,
Object value) {
String regex = "([0-9]{2}).([0-9]{2}).([0-9]{4})";
String date = (String) value;
if (date.matches(regex)) {
validNewDate = true;
} else {
validNewDate = false;
String message = "Bitte gültiges Datum eingeben!";
context.addMessage(toValidate.getClientId(context),
new FacesMessage(message));
}
}
h:commandButton沒有'oncomplete'屬性。 – Makhiel
噢,好的,謝謝! 但是,如果我使用a4j:commandButton出現另一個問題: 如果我嘗試提交錯誤的日期彈出不會按要求關閉,但不會顯示錯誤消息。 – Marco
你必須渲染消息的地方。 BTW。只有在驗證newVorGueltigAb失敗時纔會顯示。因此,請查看整個表單的'h:messages'或'rich:messages'。 BTW2。如果你想驗證失敗,你必須拋出'ValidatorException'。 –