正如标题所说, 我想在没有继承MultiActionController的单个控制器中执行多个功能。
所以我制作了类似下面的代码。
package org.owls.replace;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping(value={"/test"})
public class TestController {
private Logger log = Logger.getLogger(TestController.class);
@RequestMapping(params={"m=doA"})
public void doA() throws Exception{
log.info("DoA !");
}
@RequestMapping(params={"m=doB"})
public void doB() throws Exception{
log.info("DoB !");
}
@RequestMapping(params={"m=doC"})
public void doC() throws Exception{
log.info("DoC !");
}
};
此代码有效。如果我打电话给“〜/ m = doA”,它会打印“DoA”。但是,我想要的是删除每个@RequestMapping,除了类。(因为参数“m”是固定的,只有方法名称可以作为参数)
所以我期望的是像下面这样的代码(不起作用。但要注意@RequestMappping中的params值)。
package org.owls.replace;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping(value={"/test"}, params={"doA", "doB", "doC"})
public class TestController {
private Logger log = Logger.getLogger(TestController.class);
public void doA() throws Exception{
log.info("DoA !");
}
public void doB() throws Exception{
log.info("DoB !");
}
public void doC() throws Exception{
log.info("DoC !");
}
};
** 如何在不使用MultiActionController或xml设置的情况下使用参数映射方法名称?
我的英语很难看,但我希望你能通过阅读代码来理解我的意思。感谢您编辑糟糕的英语并分享我的问题。 :d
答案 0 :(得分:0)
Spring MVC可以自定义,您可以通过实现和注册自定义HandlerMapping
和HandlerAdapter
来实现这一目标,但这不值得。
使用您的第一次预感并使用@RequestMapping(params={"m=doXXX"})
带注释的方法。这也将作为关于如何映射方法的文档,而不是做出假设。