真正的问题:有没有办法在初始页面加载时清除所有组件的某些属性?
背景信息:
在我的应用程序中,我有一个与服务层对话的JSF 2.0前端层(服务层由注入托管bean的Spring bean组成)。
服务层执行自己的验证,我使用自己的验证器类在前端层进行相同的验证,以尝试避免代码重复。这些验证器类不是JSF验证器,它们只是POJO。
我只对动作进行验证,因此在动作方法中,我执行验证,并且只有在它有效时我才会调用服务层。
当我进行验证时,我使用反射在UIComponents上设置styleClass和title(因此如果UIComponent具有setStyleClass(:String)或setTitle(:String)方法,那么我使用它们。)
这很好用,并且在验证错误时,我看到一个样式很好的文本框,如果我将鼠标悬停在其上,则弹出窗口包含错误消息。但是,由于组件绑定到Session Scoped Managed Bean,似乎这些属性仍然存在。因此,如果我离开并返回同一页面,则styleClass和title仍处于错误状态。
有没有办法在每个初始页面加载时清除styleClass和title属性?
谢谢,
詹姆斯
P.S。我正在使用action方法进行验证,因为我之前使用过JSF 1.2及其验证方法时遇到的一些问题,但是不记得为什么......所以这就是我使用action方法验证的原因。
答案 0 :(得分:0)
好的,所以我必须使用PhaseListener,请参阅this blog entry by BalusC和this other blog entry,这是我正在做的事情的更好方法 - 使用反射手动设置styleClass - 获取所有组件有消息并突出显示它们......我会做同样的事情,但是认为可以添加一个属性,但尚未尝试过。