【问题标题】:Two required and depending fields两个必填字段和依赖字段
【发布时间】:2016-07-11 19:55:11
【问题描述】:

我有两个必填字段,第二个取决于第一个,我的意思是,第二个字段必须在第一个为空时禁用。

在流程开始时一切都很好,当我填写第一个字段时,第二个字段显示为启用,但是当我清理第一个字段时,验证出错,第二个字段仍然启用。

<h:inputText required="true" value="#{x.x}" />
<h:inputText required="true" value="#{x.y}" disabled="#{empty x.x}" />

我怎样才能让它正常工作?

【问题讨论】:

  • 我认为这是预期的行为。您有 required=true 属性意味着您无法清除它的值,当您无法清除该值时,第二个字段无法再次禁用。

标签: validation jsf


【解决方案1】:

您的disabled 属性检查模型值。但是,模型值不会在验证失败时更新。然后,您基本上是在检查先前提交的模型值。

最好检查提交的值本身,它可用作由组件的客户端 ID 标识的 HTTP 请求参数:

<h:inputText binding="#{c}" ... required="true" />
<h:inputText ... required="true" disabled="#{empty param[c.clientId]}" />

或者,另外检查组件是否仍然是valid

<h:inputText binding="#{c}" ... required="true" />
<h:inputText ... required="true" disabled="#{empty c.value or not c.valid}" />

无论如何,当您填写两个字段然后仅删除第一个字段时,那些仅不包括情况。第二个将显示为禁用,但仍填写。从这个问题中不清楚在这种情况下你到底想做什么,所以我把它留给你作为练习。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多