2011-10-05 81 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的