有没有办法完成这样的事情: 我有一个用于导航的表单:
<form action="mapping.do">
<input type="submit" value="menuOption01" />
<input type="submit" value="menuOption02" />
</form>
PageController
类太大而且依赖性太多,我需要添加另一个菜单选项,但不想增加复杂性。我想在另一个处理新菜单选项的控制器中有一个方法。
尝试这个给了我一个Spring配置错误(已经有处理程序映射):
@Controller
@SessionAttributes(types = { Entity.class })
class PageController {
@RequestMapping(params = "menuOption01", value = "mapping.do")
public String viewPage(@ModelAttribute final Entity entity) {
...
return "view";
}
... // another 5000 lines of code
}
@Controller
class OtherController {
@RequestMapping(params = "menuOption02", value = "mapping.do")
public String viewOtherPage(@ModelAttribute final Entity entity) {
...
return "otherview";
}
}
答案 0 :(得分:2)
我遇到了类似的情况,所以我们为这些类型的方法制作了以下默认处理程序:
@RequestMapping(method = RequestMethod.POST, params = SIDE_TAB, value = "sideMenuController.xhtml")
public ModelAndView changeSelectedTab(@RequestParam(SIDE_TAB) String sideTab) {
return new ModelAndView("redirect:/location/" + Utils.toCamelCase(sideTab) + ".xhtml");
}
我们的网页有以下内容:
<input type='submit' name='side-tab' value='$value' />
这当然意味着我们必须为文件本身设置一个命名标准,但这很容易确保发生(即“事件历史记录”将转到eventHistory.xhtml,“创建新实体”将转到“ createNewEntity.xhtml“等等......)
答案 1 :(得分:1)
不直接,但是:
您可以在网址中加入该参数:value=/mapping/parameter/
和/mapping/otherparameter
。 (.do
扩展名有点过时btw)
使用if
条款 - 使用@RequestParam("param", required=false) String param
传递两个参数并使用if (param != null) viewPage();
您可以使用一个方法HttpServletRequest
并检查具有给定名称的参数是否存在(使用request.getParameter("foo") != null
)
答案 2 :(得分:1)
您可以使用参数per方法映射。看到我的问题和答案:
只需使用这些类:
<bean name="handlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <bean name="handlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>