每个请求多个控制器

时间:2014-03-07 06:11:42

标签: spring spring-mvc httprequest spring-roo

可以使用多个控制器来处理单个请求。请求将要处理的主控制器仍然存在。然后,此主控制器将在body tile属性上呈现。其他控制器用于呈现(menuheaderfooter)tile属性。

简而言之,这layout.xml可能是正确的吗?

<definition name="default" template="/WEB-INF/layouts/default.jspx">
   <put-attribute name="header" value="/other/header" />
   <put-attribute name="menu" value="/other/menu" />
   <put-attribute name="footer" value="/other/footer" />
</definition>

使用/other/**

的代码结构映射OtherController
@Controller
@RequestMapping("/other/**")
public class OtherController {

    @RequestMapping(value="header") 
    public String header() { 
        // TODO Statements here
        return "other/header";
    }

    @RequestMapping(value="menu") 
    public String menu() { 
        // TODO Statements here
        return "other/menu";
    }

    @RequestMapping(value="footer") 
    public String footer() { 
        // TODO Statements here
        return "other/footer";
    }

}

1 个答案:

答案 0 :(得分:0)

不,多个控制器无法管理相同的请求。

这不是Roo问题,而是关于Spring MVC。当请求到来时,请求调度程序搜索与请求路径,URL等匹配的Controller,并委托它来处理请求。

调度程序在第一个控制器上委托与请求路径,参数等匹配,因此如果您为同一请求注册了多个控制器,则只有第一个控制器将处理该请求。