gpt4 book ai didi

java - struts2对话和验证

转载 作者:行者123 更新时间:2023-11-30 11:41:01 25 4
gpt4 key购买 nike

我正在从事一个具有相互依赖形式的 struts2 项目。我找到了struts2-conversation,一步步通过他们的simple-example到目前为止理解了对话机制(如果我有什么不对的地方请纠正我):

  • Controller 映射在struts.xml 中
  • 它包含可序列化的 ConversationContext 和存储服务
  • ConversationContext 包含按命名约定映射到表单上的 POJO

现在我的问题是将验证放在哪里?

在此结构中, Controller 只是一个扩展 ConversationSupport 的 Controller ,因此 ActionSupport 提供验证、准备和 addField- & ActionError 方法。但是在 Controller 内进行验证意味着要验证整个上下文,这并不能真正解决问题。

我尝试通过 POJO 中的注释进行验证,在上述上下文中,这给了我一些 NullPointerException,就好像上下文没有刷新一样,我认为 struts2 的 xml 验证方法太僵硬了。 (顺便说一句,如何让生成的 javascript 在服务之前被缩小?为什么有这么多选项?)

Mark 的对话拦截器方法有 similar problems接下来是我没有真正得到的解决方法。也许你可以在那里帮助我。

最佳答案

如果您想在模型类上使用注解,它可以与插件一起正常工作(其他验证方法也是如此)。

要验证您的模型,请将 @VisitorFieldValidator 添加到 Controller 中的 getModel() 方法。在示例应用程序中,您还可以将 @VisitorFieldValidator 添加到 getContact()getPreferences() 方法中。然后你可以使用 validation annotations在您希望验证的字段上。

示例中的服务只是一个在 Struts2 Controller 中使用注入(inject)服务的简单示例,以及它如何与对话框架轻松集成,但它不直接相关或不需要(我建议使用在现实世界中用于依赖注入(inject)的 Spring、Guice 或 CDI)。

ConversationContext 类主要供框架内部使用。您应该能够通过使用注释和约定来避免与它交互。除非您只是想冒险。

要在示例应用程序中使用 XML 验证,您必须更改包名称以删除“struts2”字样,以便 Struts2 资源加载工具加载 XML。

关于java - struts2对话和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12446402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com