1

我有一个基本的 CRUD 视图范围 bean。在 setter 方法中,我正在执行一些特定于数据的验证,如果其中任何一个 setter 发生错误,它会为每个 setter 构建详细的错误消息。

这工作正常,但我想在每个请求上清空这个错误消息,我不知道我会怎么做。 preRenderView不会削减它,因为此错误消息也需要呈现。像 apostRenderView这样的东西是理想的。

4

1 回答 1

3

您不应在 setter 方法中执行验证,也不应将验证消息存储在支持 bean 中。您的整个问题只是由糟糕的设计和没有使用 JSF 提供的验证工具引起的。

只需使用 JSF 提供的验证工具,而不是完全围绕它工作,到目前为止所描述的所有问题都会消失。您可以在输入组件上使用多个 JSF 内置验证器,例如required="true"validator="javax.faces.XxxValidator<f:validateXxx>标签等。Validator您可以通过实现接口并为其提供您在validator="myValidator"or中使用的唯一验证器 ID来创建自定义验证器<f:validator validatorId="myValidator">

使用 JSF 标准验证时,任何验证错误都将在请求范围内以ValidatorException带有 a的形式抛出,FacesMessage该范围将显示在<h:message>与组件关联的 a 中。这样,消息将在后续请求中“自动”消失。

这是一个非常基本的启动示例:

<h:form>
    <h:inputText id="foo" required="true" requiredMessage="Enter this!" />
    <h:message for="foo" />
    <h:commandButton value="Submit" />
</h:form>

也可以看看:

于 2012-07-30T17:14:27.373 回答