0

我到处搜索,但找不到解决方案。我正在尝试使用 required=yes 来验证值是否存在。我在 inputtext 中使用它。问题是它在数据表中不起作用。如果我将文本框放在数据表之外,它就可以工作。我使用的是 JSF 1.7,所以我没有来自 JSF 2.0 的 validateRequired 标记。

我什至使用了一个验证器类,但它仍然无法正常工作。有谁知道为什么数据表中的 inputtext 中的 required=yes 或 validator='validationClass' 不起作用。

我很感激帮助。

谢谢。

4

1 回答 1

2

首先,属性的正确属性值required是布尔值truefalse,而不是 的字符串值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?

于 2011-08-25T23:57:55.890 回答