Сопоставление контроллера Spring MVC с файлами свойств - PullRequest
0 голосов
/ 24 августа 2011

Возможно ли определять вещи внешне в файлах свойств для наших аннотаций на Spring Controllers?

Предположим, у меня есть следующий контроллер

@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, нам нужно изменить ее только в файле свойств, а не в двух местах.

Возможно ли это?

Ответы [ 2 ]

3 голосов
/ 24 августа 2011

Значения параметра аннотации должны быть литералом или ссылаться на постоянное поле, поэтому внешнее динамическое значение не может быть введено в аннотацию @RequestMapping. Альтернативой может быть управление поведением с использованием некоторой другой скрытой переменной формы, сопоставленной с литералом (SAVEMODEL / REFRESH) вместо текста, который отображается пользователю (вы можете получить требование интернационализировать текст, отображаемый для пользователя в какой-то момент и эта модель потом сломается)

0 голосов
/ 24 августа 2011

Вы также можете создать методы modelAndView в вашем контроллере, и вам не нужно помещать @requestMapping на голову контроллера. Итак, ваш контроллер стал примерно таким:

@ Контроллер

открытый класс ProcessorController {

@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), и у вас будет 3 представления в одном контроллере. И это все

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...