可以使用多个控制器来处理单个请求。请求将要处理的主控制器仍然存在。然后,此主控制器将在body
tile属性上呈现。其他控制器用于呈现(menu
,header
,footer
)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";
}
}
答案 0 :(得分:0)
不,多个控制器无法管理相同的请求。
这不是Roo问题,而是关于Spring MVC。当请求到来时,请求调度程序搜索与请求路径,URL等匹配的Controller,并委托它来处理请求。
调度程序在第一个控制器上委托与请求路径,参数等匹配,因此如果您为同一请求注册了多个控制器,则只有第一个控制器将处理该请求。