我正在开发一个具有相互依赖形式的struts2项目。 我找到了struts2对话,逐步完成了simple-example 并了解到目前为止的谈话机制(如果我出错了,请纠正我):
现在我的问题是在哪里进行验证?
在这种结构中,控制器只有一个扩展ConversationSupport,从而ActionSupport提供validate,prepare和addField-& ActionError方法。 但是在控制器内进行验证意味着验证整个上下文,这并不能真正解决问题。
我尝试通过POJO中的注释进行验证,如上所述在上下文中给出了一些NullPointerException,好像上下文没有被刷新,我认为struts2的xml验证方法太过僵硬。 (顺便说一下如何让生成的javascripts在被服务之前缩小?为什么有这么多选项呢?)
Mark的会话 - 拦截器方法已经出现similar problems,这是我没有真正得到的解决方法。也许你可以帮助我。
答案 0 :(得分:1)
如果您想在模型类上使用注释,它可以与插件一起使用(与其他验证方法一样)。
要验证您的模型,请将@VisitorFieldValidator
添加到控制器中的getModel()
方法。在示例应用中,您还可以将@VisitorFieldValidator
添加到getContact()
和getPreferences()
方法中。然后,您可以在要验证的字段上使用validation annotations。
示例中的服务就是在Struts2控制器中使用注入服务的一个简单示例,以及它如何与对话框架轻松集成,但它没有直接关联或需要(我建议使用在现实世界中依赖注入的Spring,Guice或CDI。)
ConversationContext类主要供框架内部使用。您应该能够通过使用注释和约定避免与它进行交互。除非你只是想冒险。
要在示例应用程序中使用XML验证,您必须更改程序包名称以删除“struts2”单词,以便Struts2资源加载工具加载XML。