Validation JSF2-清除页面加载上的组件属性?

Validation JSF2-清除页面加载上的组件属性?,validation,components,jsf-2,Validation,Components,Jsf 2,真正的问题是:是否有办法在初始页面加载时清除所有组件的某些属性 背景信息: 在我的应用程序中,我有一个JSF2.0前端层,它与服务层(服务层由注入托管bean的SpringBean组成)对话 服务层执行自己的验证,我在前端层使用自己的验证程序类执行相同的验证,以尝试以某种方式避免代码重复。这些验证器类不是JSF验证器,它们只是POJO 我只对一个动作进行验证,所以在动作方法中,我执行验证,并且只有在它有效时,我才调用服务层 当我进行验证时,我使用反射在UIComponents上设置styleCl

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

背景信息:

在我的应用程序中,我有一个JSF2.0前端层,它与服务层(服务层由注入托管bean的SpringBean组成)对话

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

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

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

这很好地工作,在一个验证错误上,我看到一个样式很好的文本框,如果我将鼠标悬停在上面,它会弹出一个包含错误消息的弹出窗口。但是,由于该组件绑定到会话范围的托管Bean,因此这些属性似乎仍然有效。因此,如果我离开并返回同一页面,styleClass和title仍然处于错误状态

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

谢谢

詹姆斯


另外,我正在使用action方法进行验证,因为我之前在JSF1.2及其验证方法方面遇到了一些问题,但我不记得为什么。。。这就是为什么我要使用action方法进行验证。

好的,所以我必须使用PhaseListener,请参阅,这是一种更好的方法,可以完成我已经在做的事情-使用反射手动设置styleClass-它可以获取所有包含消息的组件并突出显示它们。。。我也会这么做,但是我认为可以添加一个属性,但我还没有尝试过。

我需要实现一个PhaseListener吗?我可以为我想在托管bean中清除它们的组件清除它们,但是PhaseListener可以避免我必须为每个组件手动执行吗?我不会清除styleClass,只是从中删除某个“错误”类,所以我认为这可能是一个可能的解决方案。。。如果是一个阶段侦听器,它应该在哪个阶段执行,我假设第一个阶段[][]我需要访问组件树中的所有组件。PhaseListener没有访问权限,因此使用ViewHandler。。。效率不高。仍在努力寻找更好的解决方案。