【问题标题】:Conditional Mandatory fields in RichfacesRichfaces 中的条件必填字段
【发布时间】:2011-10-05 13:05:50
【问题描述】:

我正在为我的应用程序使用 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”也是可选的

目前,我正在检查支持 bean 上 saveData 方法上的 input2 和 input3(单击保存按钮时)并向屏幕抛出错误消息。

但是下面的场景失败了, 如果用户在 input1 中输入“####”等特殊字符,并在 input2 中输入有效值但将 input3 保留为空,则我只会在屏幕上收到与 input1 相关的错误消息。

这是因为正则表达式验证甚至在到达支持 bean 中的保存方法之前就被触发了。

有什么办法可以克服这种方法。请指教

【问题讨论】:

  • 你终于搞定了吗?我也有类似的问题...

标签: jsf richfaces


【解决方案1】:

您可以通过在后端 saveData() 方法中进行验证并从那里创建消息来解决此问题。 JSF 将以与其他验证相同的方式处理它们,但您拥有更多控制权。

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

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

MAG, 米洛·范德泽

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 2019-03-01
    • 2021-08-27
    • 2016-05-22
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    相关资源
    最近更新 更多