Я написал свой собственный механизм маршрутизации URL-адресов, который позволяет отображать URL-адреса в ModelAndViews и ModelAndViews обратно в URL-адрес (https://github.com/knyttl/Maite/wiki/Maite-Routing).
Я пытаюсь создать метод Freemarker, который изменит текущий ModelAndView и вызовет процесс обратной маршрутизации.
Итак, в шаблоне я хотел бы добиться чего-то вроде:
${link("view", [id:10, page:1])}
Тогда макрос будет определен примерно так:
@Autowired
HandlerAdapter ha;
public TemplateModel exec(List args) throws TemplateModelException {
ModelAndView current = __getItSomehowFromTheTemplate();
if (current.getViewName() != (String) args.get(0)) {
// if the view is the same, we just modify the model
...
current.set...
} else {
// the view is different, we create a new ModelAndView
current = new ModelAndView();
}
// reverse routing process
return new SimpleScalar(ha.constructUrl(current));
}
Интересно, нужно ли мне каждый раз передавать ModelAndView методу, или я могу позволить Freemarker каким-то образом передавать его автоматически, как с моим волшебным методом __getItSomehowFromTheTemplate();
Если я должен передать его автоматически, как я могу это сделать? Я не нашел прямой ссылки на текущий ModelAndView.
Спасибо