2015-06-16 5 views
3

Springframework может интегрироваться с движком шаблонов freemarker. Spring предоставляет spring.ftl с основными макросами и функциями для облегчения поддержки формы. Чтобы вызвать макрос, который создает для вас поле формы, а также разрешает выбор значения (даже для singleSelects или multiSelects).Что такое springMacroRequestContext, вызываемый в bind macro of spring.ftl?

Важным компонентом, который делает миф, является его макрос связывания, который вызывает некоторый таинственный springMacroRequestContext для получения информации о статусе связывания.

Где, черт возьми, эта переменная исходит и что скрывается за ней?

ответ

5

Ответственный за это класс org.springframework.web.servlet.view.AbstractTemplateView, обеспечивается spring-mvc.*.jar - линии 154/метод renderMergedOutputModel(.*).

Переменная шаблона вводится жестким кодированием. Я узнал, что рядом с каким-то другим экологическим материалом.

При использовании springMacroRequestContext мы говорим с примером org.springframework.web.servlet.support.RequestContext.

Звонок связывания создает экземпляр org.springframework.web.servlet.support.BindStatus.

Я не пишу блог. Но может быть люди, как я, которые ищут для этого, чтобы понять, что происходит :)

0

В исследовании было установлено, следующая последовательность вызовов процедур для ручной конкретизации:

String SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE = "springMacroRequestContext"; 
Map<String, Object> model = new HashMap(); 
model.put(SPRING_MACRO_REQUEST_CONTEXT_ATTRIBUTE, 
        new RequestContext(request, /*response, */ 
              /*request.getSession().getServletContext(),*/ 
              /*getServletContext()*/ model)); 

и позже

Template t = freemarkerConfig.getConfiguration().getTemplate(templateName); 
String text = FreeMarkerTemplateUtils.processTemplateIntoString(t, model); 

Он без труда обеспечит разработчику доступ к общим весенним «макро» -s (например, spring.message, singleSelects и др.).

Как очевидно, требуется передать хотя бы ненулевой экземпляр запроса сервлета http.

Теперь я ищу метод создания экземпляра springMacroRequestContext для случая отсутствия экземпляра запроса HTTP-сервлета.

На данный момент: Я не знаю, «откуда, черт возьми, эта переменная исходит», изначально, , потому что я не отлаживал или не трассировал собственные экземпляры. Тем не менее, я частично ответил на вторую часть вопроса: «и что скрывается за ним», так что на самом деле это RequestContext();.

Смежные вопросы