2011-10-05 90 views
2

我爲我的應用程序使用了Richfaces 3.3.3。我不知道如何在豐富的面孔中實現有條件的強制檢查。下面是我的情形:Richfaces中的條件性必填字段

我有3個文本框輸入1,輸入2,輸入3如下:

<h:inputText id="input1" value= "#{mybean.input1}" required= "true" maxlength="350" > 
    <mj:regexValidator pattern="[0-9A-Za-z% ]*" /> 
</h:inputText> 

<h:inputText id="input2" "#{mybean.input2}"maxlength="350" ></h:inputText> 

<h:inputText id="input3" "#{mybean.input3}"maxlength="350"></h:inputText> 
<a4j:commandButton value="save" action="#{mybean.saveData}"/> 

在上面的代碼中,「輸入1」是必需字段只接受字母數字值。 「input2」是可選字段,只有當用戶輸入「input2」時才需要「input3」,否則「input3」也是可選的

目前,我在支持bean上檢查saveData方法的input2和input3按鈕)並將錯誤消息發送到屏幕。

但是,以下方案失敗, 如果用戶在input1中輸入「####」之類的特殊字符,並且在input2中輸入了有效值但將input3保留爲空,則我只會在屏幕上收到與input1相關的錯誤消息。

這是因爲正則表達式驗證甚至在backing bean中達到save方法之前觸發。

有什麼辦法可以克服這種方法。請指教

+0

你終於成功了嗎?我遇到類似的問題... – BRabbit27

回答

0

您可以通過在後端saveData()方法中進行驗證並從中創建消息來解決此問題。 JSF將以與其他驗證相同的方式處理它們,但隨後您將擁有更多控制權。

FacesContext.getCurrentInstance().addMessage("info", new FacesMessage(FacesMessage.SEVERITY_INFO, message, message)); 

context.addMessage(fullFieldId, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message)); 

MAG, 米洛的van der Zee的