Java Spring3 formBackingObject能否返回不同的命令类?

Java Spring3 formBackingObject能否返回不同的命令类?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我需要检查formBackingObject中的条件,并根据条件返回两个类中的一个 问题是,据我所知,我只能在servlet.xml中定义一个commandName和commandClass。有人知道我能处理这件事的方法吗?这似乎不是一个罕见的用例,但我还没有在网上找到任何解决方案 以下是我的控制器formBackingObject的逻辑块: List<FooLoadShed> fooLoadShedList = this.fooLoadShedDao.getActiveSh

我需要检查formBackingObject中的条件,并根据条件返回两个类中的一个

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

以下是我的控制器formBackingObject的逻辑块:

    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"));
    }
List-dougoadsheddlist=this.dougoadsheddao.getActiveSheds();
if(愚笨的shedlist.isEmpty()){
info(“LoadShedActive是:+this.sessionDetailsManager.getSessionDetails().isLoadShedActive());
返回新的NoAction();
}
否则{
this.sessionDetailsManager.getSessionDetails().setLoadShedActive(true);
info(“LoadShedActive是:+this.sessionDetailsManager.getSessionDetails().isLoadShedActive());
logger.info(“装载棚的数量:+nieLoadShedList.size());
返回新的ModelAndView(新的重定向视图(“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控制器的方法!我已经10多年没见过这样的事情了。为什么不使用更现代的SpringMVC配置,使用注释而不是XML

无论如何,指挥类的重要性在于岗位。SpringMVC必须能够构造命令类的实例。为了做到这一点,它需要知道特定的类名。然后,它将表单值应用于创建的命令类对象上的属性。这个完全填充的命令对象将通过handler方法传递给您

XML中的配置用于默认的命令对象创建过程。你可以覆盖这个。在现代SpringMVC中,这是一个方法级@ModelAttribute注释。在古老的SpringMVC中,您需要重写创建命令对象的方法,并自己创建命令对象
BaseCommandController
有一个受保护的
createCommand
方法。如果这是您创建控制器的方式,那么您必须从这里开始