Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有属性文件的Spring MVC控制器映射_Java_Spring_Spring Mvc - Fatal编程技术网

Java 带有属性文件的Spring MVC控制器映射

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

是否可以在外部将内容定义到属性文件中,以便在Spring控制器上进行注释

假设我有以下控制器

@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),并且在一个控制器中有三个视图。就这些