Java 带有属性文件的Spring MVC控制器映射
是否可以在外部将内容定义到属性文件中,以便在Spring控制器上进行注释 假设我有以下控制器Java 带有属性文件的Spring MVC控制器映射,java,spring,spring-mvc,Java,Spring,Spring Mvc,是否可以在外部将内容定义到属性文件中,以便在Spring控制器上进行注释 假设我有以下控制器 @Controller @RequestMapping(value = "processModel.jsp") public class ProcessorController { @RequestMapping(method = RequestMethod.GET) public String displayModel() { //Code to load proc
@Controller
@RequestMapping(value = "processModel.jsp")
public class ProcessorController {
@RequestMapping(method = RequestMethod.GET)
public String displayModel() {
//Code to load processor
return "processModel";
}
@RequestMapping(method = RequestMethod.POST, params="submit=Refresh")
public String refreshModel() {
//Code to refresh data
return "processModel";
}
@RequestMapping(method = RequestMethod.POST, params="submit=Save Model")
public String saveModel() {
//Code to save model
return "processModel";
}
}
假设生成了以下HTML:
<input type="submit" name="submit" value="Save Model" />
<input type="submit" name="submit" value="Refresh" />
最好将这些参数外部化,这样我们只需在属性文件中定义它们一次。这样,如果我们需要在JSP中更改submit按钮上的标签,我们只需要在属性文件中更改它,而不需要在两个位置进行更改
这可能吗?注释参数值需要是文本或引用常量字段,因此外部化的动态值不能注入@RequestMapping注释。另一种方法是,使用映射到文本(SAVEMODEL/REFRESH)的其他隐藏表单变量来驱动行为,而不是向用户显示的文本(您可能需要在某个时候将向用户显示的文本国际化,然后此模型将崩溃)注释参数值必须是文字或引用常量字段,因此外部化的动态值不能注入@RequestMapping注释中。另一种方法是,使用映射到文本(SAVEMODEL/REFRESH)的其他隐藏表单变量来驱动行为,而不是向用户显示的文本(您可能需要在某个时候将向用户显示的文本国际化,然后此模型将崩溃)您也可以在控制器中创建modelAndView方法,而不必在控制器的头部放置@requestMapping。所以你的控制器变成这样: @控制器
@Controller
@RequestMapping(value = "processModel.jsp")
public class ProcessorController {
@RequestMapping(method = RequestMethod.GET)
public String displayModel() {
//Code to load processor
return "processModel";
}
@RequestMapping(method = RequestMethod.POST, params="submit=Refresh")
public String refreshModel() {
//Code to refresh data
return "processModel";
}
@RequestMapping(method = RequestMethod.POST, params="submit=Save Model")
public String saveModel() {
//Code to save model
return "processModel";
}
}
公共类处理器控制器{
@RequestMapping(value="getView.html" method = RequestMethod.GET)
public ModelAndView displayModel(HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
//Code to load processor
mav.setViewName = "processModel";
return mav;
}
@RequestMapping(value="refreshModel.html" method = RequestMethod.POST)
public ModelAndView refreshModel(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView();
//Code to refresh data
mav.setViewName="refreshModel";
return mav;
}
@RequestMapping(value="saveModel.html" method = RequestMethod.POST)
public String saveModel(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView();
//Code to save model
mav.setViewName="saveModel";
return mav;
}
}
之后,您只需创建三个jsp文件(saveModel.jsp、refreshModel.jsp、processModel.jsp),并且在一个控制器中有三个视图。这就是全部您还可以在控制器中创建modelAndView方法,而不必在控制器的头部放置@requestMapping。所以你的控制器变成这样: @控制器
@Controller
@RequestMapping(value = "processModel.jsp")
public class ProcessorController {
@RequestMapping(method = RequestMethod.GET)
public String displayModel() {
//Code to load processor
return "processModel";
}
@RequestMapping(method = RequestMethod.POST, params="submit=Refresh")
public String refreshModel() {
//Code to refresh data
return "processModel";
}
@RequestMapping(method = RequestMethod.POST, params="submit=Save Model")
public String saveModel() {
//Code to save model
return "processModel";
}
}
公共类处理器控制器{
@RequestMapping(value="getView.html" method = RequestMethod.GET)
public ModelAndView displayModel(HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
//Code to load processor
mav.setViewName = "processModel";
return mav;
}
@RequestMapping(value="refreshModel.html" method = RequestMethod.POST)
public ModelAndView refreshModel(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView();
//Code to refresh data
mav.setViewName="refreshModel";
return mav;
}
@RequestMapping(value="saveModel.html" method = RequestMethod.POST)
public String saveModel(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView();
//Code to save model
mav.setViewName="saveModel";
return mav;
}
}
之后,您只需创建三个jsp文件(saveModel.jsp、refreshModel.jsp、processModel.jsp),并且在一个控制器中有三个视图。就这些