gpt4 book ai didi

validation - 至少填写一个字段时,根据需要验证一组字段

转载 作者:行者123 更新时间:2023-12-05 00:31:36 24 4
gpt4 key购买 nike

在基本注册屏幕(带有按钮注册记录屏幕)中有两个面板:

数据面板:

enter image description here

地址面板:

enter image description here

我可以通过仅完成“数据”面板来注册。不必填写地址面板。但是,如果至少填写了地址面板的一个字段,则应要求同一面板中的所有其他字段。

enter image description here

我怎样才能做到这一点?

最佳答案

您需要 checkin required如果其他输入已提交非空值,则为属性。由于这会产生相当多的样板文件,因此这里是一个只有 3 个输入组件的启动示例。

<h:form id="form">
<h:inputText id="input1" value="#{bean.input1}" required="#{empty param['form:input2'] and empty param['form:input3']}" />
<h:inputText id="input2" value="#{bean.input2}" required="#{empty param['form:input1'] and empty param['form:input3']}" />
<h:inputText id="input3" value="#{bean.input3}" required="#{empty param['form:input1'] and empty param['form:input2']}" />
</h:form>

另一种方法是将组件绑定(bind)到 View 并使用 UIInput#getValue() 检查先前组件的值和 UIInput#getSubmittedValue() 检查它们是否有下一个组件(即按组件树中出现的顺序处理组件)。这样您就不需要硬编码客户端 ID。您只需要确保绑定(bind)名称不与现有托管 bean 名称冲突。

<h:inputText binding="#{input1}" value="#{bean.input1}" required="#{empty input2.submittedValue and empty input3.submittedValue}" />
<h:inputText binding="#{input2}" value="#{bean.input2}" required="#{empty input1.value and empty input3.submittedValue}" />
<h:inputText binding="#{input3}" value="#{bean.input3}" required="#{empty input1.value and empty input2.value}" />

您会明白,当您拥有越来越多的组件时,这会产生丑陋的样板。 JSF 实用程序库 OmniFaces有一个 <o:validateAllOrNone> 验证器用于确切目的。另见 live demo .根据您的问题标签,您正在使用 OmniFaces,因此您应该已经设置好了:

<o:validateAllOrNone components="input1 input2 input3" />
<h:inputText id="input1" value="#{bean.input1}" />
<h:inputText id="input2" value="#{bean.input2}" />
<h:inputText id="input3" value="#{bean.input3}" />

关于validation - 至少填写一个字段时,根据需要验证一组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14458829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com