【问题标题】:Custom component Required Attribute自定义组件必需属性
【发布时间】:2012-04-18 14:47:13
【问题描述】:
我正在学习 JSF 并开始在 JSF 1.2 中编写自定义组件。有人可以解释一下 JSF 的“必需”属性是如何工作的吗?我查看了生成的 html,它没有显示任何需要的内容。
我正在编写一个带有多个输入文本的 JSF 组件,但只有其中一些是必需的(例如,编写 2 个输入文本 Zipcode 组件,其中最后一个输入文本始终是可选的,而第一个输入文本由 required 属性控制在 xhtml 中定义。
如何处理这种选择性的“必需”行为?
【问题讨论】:
标签:
jsf
custom-component
required
【解决方案1】:
组件的 required 属性仅存储在服务器端,客户端不知道默认情况下需要哪些字段。当您发布带有空必填字段的表单时,JSF 会将这些字段与其服务器端模型进行比较,并从那里进行验证,为空的必填字段呈现错误消息。您可以在 JSF 生命周期(仅在服务器端处理)中见证这一点。如果必填字段为空,生命周期将在第 3 步停止,并跳过模型更新。
- 恢复视图
- 应用请求值;处理事件
- 过程验证;处理事件
- 更新模型值;处理事件
- 调用应用程序;处理事件
- 呈现响应
关于第二个问题,如果输入文本的数量是静态的,您可以简单地将其中一些设置为required="true",将一些设置为required="#{cc.attrs.required}"。