spring.ftl的bind宏中调用的springMacroRequestContext是什么?
What is the springMacroRequestContext called in bind macro of spring.ftl?
Spring框架能够与 freemarker 模板引擎集成。 Spring 提供 spring.ftl 核心宏和函数来简化表单支持。调用为您构建表单字段并解决值选择(甚至对于 singleSelects 或 multiSelects)的宏。
实现神话的关键组件是它们的绑定宏,它调用一些神秘的 springMacroRequestContext 来获取绑定状态信息。
这个变量到底是从哪里来的,背后隐藏着什么?
对此负责的是 class org.springframework.web.servlet.view.AbstractTemplateView
,由
spring-mvc.*.jar
- 第 154 行/方法 renderMergedOutputModel(.*)
.
模板变量通过硬编码注入。在其他一些环保材料旁边,我认出了。
当使用 springMacroRequestContext 时,我们正在与一个实例对话
org.springframework.web.servlet.support.RequestContext
.
绑定调用创建了 org.springframework.web.servlet.support.BindStatus
的实例。
我不写博客。但是可能有像我这样的人正在搜索这个以了解发生了什么:)
通过研究发现以下过程调用序列用于手动实例化:
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);
它将无缝地为开发人员提供对常见 spring "macro"-s(如 spring.message、singleSelects 等)的访问。
很明显,至少需要传递非空的http servlet请求实例。
现在正在寻找springMacroRequestContext的实例化方法,以解决http servlet请求实例不可用的情况。
目前:我最初不知道 "Where the hell does this variable come from",
因为我没有调试或跟踪 spring 自己的实例化。
但是,我部分回答了问题的第二部分:
"and what is hidden behind it" 所以实际上它是 RequestContext();
.
Spring框架能够与 freemarker 模板引擎集成。 Spring 提供 spring.ftl 核心宏和函数来简化表单支持。调用为您构建表单字段并解决值选择(甚至对于 singleSelects 或 multiSelects)的宏。
实现神话的关键组件是它们的绑定宏,它调用一些神秘的 springMacroRequestContext 来获取绑定状态信息。
这个变量到底是从哪里来的,背后隐藏着什么?
对此负责的是 class org.springframework.web.servlet.view.AbstractTemplateView
,由
spring-mvc.*.jar
- 第 154 行/方法 renderMergedOutputModel(.*)
.
模板变量通过硬编码注入。在其他一些环保材料旁边,我认出了。
当使用 springMacroRequestContext 时,我们正在与一个实例对话
org.springframework.web.servlet.support.RequestContext
.
绑定调用创建了 org.springframework.web.servlet.support.BindStatus
的实例。
我不写博客。但是可能有像我这样的人正在搜索这个以了解发生了什么:)
通过研究发现以下过程调用序列用于手动实例化:
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);
它将无缝地为开发人员提供对常见 spring "macro"-s(如 spring.message、singleSelects 等)的访问。
很明显,至少需要传递非空的http servlet请求实例。
现在正在寻找springMacroRequestContext的实例化方法,以解决http servlet请求实例不可用的情况。
目前:我最初不知道 "Where the hell does this variable come from",
因为我没有调试或跟踪 spring 自己的实例化。
但是,我部分回答了问题的第二部分:
"and what is hidden behind it" 所以实际上它是 RequestContext();
.