inputText 的 required 属性应该取决于另一个组件提交的值

发布于 2025-01-05 19:17:57 字数 227 浏览 0 评论 0原文

我有一个包含一个下拉列表和两个输入字段的表单。

<h:selectOneMenu />
<h:inputText />
<h:inputText />

我想根据下拉列表的选定值使输入字段的必需属性成为有条件的。如果用户选择下拉列表的第一项,则必须需要输入字段。如果用户选择第二项,则不需要这些。

我怎样才能实现这个目标?

I have a form which contains a dropdown and two input fields.

<h:selectOneMenu />
<h:inputText />
<h:inputText />

I would like to make the required attribute of the input fields conditional depending on the selected value of the dropdown. If the user chooses the first item of the dropdown, then the input fields must be required. If the user chooses the second item, then those would not be required.

How can I achieve this?

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

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

发布评论

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

评论(2

一紙繁鸢 2025-01-12 19:17:57

只需将下拉列表绑定到视图并直接在 required 属性中检查其值即可。

<h:selectOneMenu binding="#{menu}" value="#{bean.item}">
    <f:selectItem itemValue="first" itemLabel="First item" />
    <f:selectItem itemValue="second" itemLabel="Second item" />
</h:selectOneMenu>

<h:inputText value="#{bean.input1}" required="#{menu.value eq 'first'}" />
<h:inputText value="#{bean.input2}" required="#{menu.value eq 'first'}" />

请注意,绑定 示例是原样的。绝对不要在这里将其设置为 bean 属性。另请参阅 JSF 中的“绑定”属性如何工作?何时以及如何使用它?

另请注意,组件的顺序很重要。如果菜单位于树中输入的下方,请改用 #{menu.subscribedValue eq 'first'}。或者,如果您想独立于此,请改用 #{param[menu.clientId] eq 'first'}

Just bind the dropdown to the view and directly check its value in the required attribute.

<h:selectOneMenu binding="#{menu}" value="#{bean.item}">
    <f:selectItem itemValue="first" itemLabel="First item" />
    <f:selectItem itemValue="second" itemLabel="Second item" />
</h:selectOneMenu>

<h:inputText value="#{bean.input1}" required="#{menu.value eq 'first'}" />
<h:inputText value="#{bean.input2}" required="#{menu.value eq 'first'}" />

Note that the binding example is as-is. Do absolutely not set it to a bean property here. See also How does the 'binding' attribute work in JSF? When and how should it be used?

Also note that the ordering of the components is significant. If the menu is located below the inputs in the tree, use #{menu.submittedValue eq 'first'} instead. Or if you want to be independent from that, use #{param[menu.clientId] eq 'first'} instead.

咋地 2025-01-12 19:17:57

假设您使用的是 JSF 2.0:让您的 SelectOneListBox 使用 ajax 执行,并在列表框更改时重新呈现输入字段:

快速草图:

<h:selectOneMenu value="#{myBean.myMenuValue}">
  <f:ajax render="input1"/>
   ..
</h:selectOneMenu>

<h:inputText id="input1" value="#{myBean.myInputValue}" 
             required="#{myBean.myMenuValue == 'firstEntry'}" />

Assuming you are using JSF 2.0: Let your SelectOneListBox execute with ajax and re-render the input fields on change of the list box:

A quick sketch:

<h:selectOneMenu value="#{myBean.myMenuValue}">
  <f:ajax render="input1"/>
   ..
</h:selectOneMenu>

<h:inputText id="input1" value="#{myBean.myInputValue}" 
             required="#{myBean.myMenuValue == 'firstEntry'}" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文