Richfaces 中的条件必填字段

发布于 2024-12-08 07:22:13 字数 909 浏览 0 评论 0原文

我在我的应用程序中使用 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 中的 save 方法之前就触发了正则表达式验证。

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

I am using Richfaces 3.3.3 for my application. I am not sure how to achieve conditional mandatory check in rich faces. Below is my scenario:

I have 3 text boxes input1,input2,input3 as follows:

<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}"/>

In the above code, "input1" is a required field accepting only alpha numeric value.
"input2" is optional field and "input3" is required only if user enters "input2" otherwise "input3" is also optional

Currently, I am checking input2 and input3 on saveData method on backing bean (on click of save button) and throw a error message to screen.

But the following scenario fails,
If user enters a special charecter like "####" in input1, and enters a valid value in input2 but leaves input3 as empty, I receive only error message related to input1 on screen.

This is because the regex validation is triggered even before reaching save method in backing bean.

Is there any way to overcome this method. Please advice

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑶笙 2024-12-15 07:22:13

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

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

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

MAG,
米洛·范德泽

You could fix this by doing the validation in the backend saveData() method and create messages from there. JSF will handle them the same way as other validations but then you have more control.

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

or

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

MAG,
Milo van der Zee

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文