我在我的应用程序中使用Richfaces 3.3.3。我不确定如何在富面孔中实现有条件的强制检查。以下是我的情景:
我有3个文本框input1,input2,input3如下:
<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}"/>
在上面的代码中,“input1”是仅接受字母数字值的必填字段。 “input2”是可选字段,只有当用户输入“input2”时才需要“input3”,否则“input3”也是可选的
目前,我正在检查back bean上的saveData方法的input2和input3(单击“保存”按钮)并向屏幕抛出错误消息。
但以下情况失败, 如果用户在input1中输入一个特殊字符“####”,并在input2中输入一个有效值但是将input3保留为空,则只会在屏幕上收到与input1相关的错误消息。
这是因为即使在支持bean中的save方法之前也会触发正则表达式验证。
有没有办法克服这种方法。请建议
答案 0 :(得分: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, Milo van der Zee