首先,属性的正确属性值required
是布尔值true
或false
,而不是 的字符串值Yes
。它是一个接受布尔表达式的属性。
以下是正确的使用示例:
<h:inputText required="true" />
<h:inputText required="#{bean.booleanValue}" />
<h:inputText required="#{bean.stringValue == 'Yes'}" />
至于它在 a 内不起作用的问题,<h:dataTable>
当数据模型没有正确保存时可能会发生这种情况(数据模型是表在其value
属性中检索的任何内容)。反过来,当托管 bean 是请求范围内的,并且在其(后)构造期间没有准备数据模型时,这可能会发生这种情况,这会导致数据模型null
在 JSF 即将收集、转换和验证提交的值时为空或为空。
您需要确保数据模型在表单提交请求的应用请求值阶段与在初始请求的呈现响应阶段完全相同,以显示带有表格的表单。一个简单的快速测试是将 bean 放在会话范围内。如果这样可以解决问题,那么您肯定需要重写数据模型保留逻辑。您还可以使用 Tomahawk<t:saveState>
或<t:dataTable preserveDataModel="true">
将数据模型存储在视图范围中(就像 JSF2 的新视图范围所做的那样)。
最后,JSF 1.7 不存在。也许您的意思是 JSF 1.2?