1

真正的问题:有没有办法在初始页面加载时清除所有组件的某些属性?

背景资料:

在我的应用程序中,我有一个与服务层通信的 JSF 2.0 前端层(服务层由注入托管 bean 的 Spring bean 组成)。

服务层进行自己的验证,我在前端层使用自己的验证器类进行相同的验证,以尝试以某种方式避免代码重复。这些验证器类不是 JSF 验证器,它们只是 POJO。

我只是对一个动作进行验证,所以在动作方法中,我执行验证,只有当它有效时,我才会调用服务层。

当我进行验证时,我使用反射在 UIComponents 上设置 styleClass 和标题(因此,如果 UIComponent 具有 setStyleClass(:String) 或 setTitle(:String) 方法,那么我将使用它们)。

这很好用,并且在验证错误时,如果我将鼠标悬停在它上面,我会看到一个样式精美的文本框,其中包含包含错误消息的弹出窗口。但是,由于组件绑定到 Session Scoped Managed Bean,这些属性似乎仍然存在。因此,如果我离开并返回同一页面,styleClass 和 title 仍处于错误状态。

有没有办法在每个初始页面加载时清除 styleClass 和 title 属性?

谢谢,

詹姆士

PS我正在使用action方法进行验证,因为我之前在JSF 1.2中遇到了一些问题,它是验证方法,但不记得为什么......所以这就是我使用action方法进行验证的原因。

4

1 回答 1

0

好的,所以我必须使用 PhaseListener,请参阅BalusC 的这篇博客文章其他博客文章,这是一种更好的方式来做我已经在做的事情 - 使用反射手动设置 styleClass - 它会获取所有带有消息和突出显示的组件他们......我会做同样的事情,但是认为可以添加一个属性,但还没有尝试过。

于 2010-03-18T06:59:38.160 回答