Я написал свой собственный механизм маршрутизации 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.
Спасибо