gpt4 book ai didi

java - Spring 3 formBackingObject可以返回不同的命令类吗?

转载 作者:行者123 更新时间:2023-12-02 04:21:04 25 4
gpt4 key购买 nike

我遇到一种情况,我需要检查 formBackingObject 中的条件,并根据条件返回两个类之一。

问题是,据我所知,我只能在servlet.xml中定义一个commandName和commandClass。有人知道我可以处理这个问题的方法吗?这似乎不是一个罕见的用例,但我还没有在网上真正找到任何解决方案。

这是我的 Controller formBackingObject 的逻辑 block :

    List<FooLoadShed> fooLoadShedList = this.fooLoadShedDao.getActiveSheds();
if(fooLoadShedList.isEmpty()) {
logger.info("LoadShedActive is: " + this.sessionDetailsManager.getSessionDetails().isLoadShedActive());
return new NoAction();
}
else {
this.sessionDetailsManager.getSessionDetails().setLoadShedActive(true);
logger.info("LoadShedActive is : " + this.sessionDetailsManager.getSessionDetails().isLoadShedActive());
logger.info("Number of load sheds: " + nieLoadShedList.size());
return new ModelAndView(new RedirectView("custLookup.htm"));
}

和我的 servlet.xml 配置:

<bean name="/index.htm" class="springapp.web.indexController" scope="session">
<property name="sessionForm" value="true"/>
<property name="commandName" value="noAction"/>
<property name="commandClass" value="springapp.service.NoAction"/>
<property name="formView" value="index"/>
<property name="sessionDetailsManager" ref="sessionDetailsManager"/>
<property name="mobiConfigDao" ref="mobiConfigDao"/>
<property name="fooLoadShedDao" ref="fooLoadShed" />
</bean>

最佳答案

这是配置 Spring MVC Controller 的一种非常古老的方法!已经有10多年没有见过这样的事情了。为什么不使用更现代的 Spring MVC 配置,使用注释而不是 XML?

无论如何,命令类的重要性都在POST中。 Spring MVC 必须能够构造命令类的实例。为此,它需要知 Prop 体的类名称。然后,它将表单值应用于所创建的命令类对象的属性。这个完全填充的命令对象将在处理程序方法中交给您。

XML 中的配置用于默认命令对象创建过程。您可以覆盖此设置。在现代 Spring MVC 中,这是使用方法级别的 @ModelAttribute 注释。在古老的Spring MVC中,您需要重写创建命令对象的方法并自己创建命令对象。 BaseCommandController 有一个 protected createCommand 方法。如果这就是您创建 Controller 的方式,那么您就必须从这里开始。

关于java - Spring 3 formBackingObject可以返回不同的命令类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32764098/

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