【发布时间】:2016-05-11 12:54:49
【问题描述】:
我是 FreeMarker 的新手,我正在开发一个使用 FreeMarker 作为模板引擎的 Spring MVC 应用程序。
所以我在尝试将空值放入模型并尝试将其评估到我的 FreeMarker 页面时遇到以下问题。
所以我有以下控制器方法:
@RequestMapping(value = "/sso/login", method = RequestMethod.POST)
public String loginPost(HttpServletResponse response, @ModelAttribute DoLoginCommand command,
@ModelAttribute("redirect") String redirect, Model model) {
...................................................................
...................................................................
...................................................................
if (statusPasswordView.getDataWarning() != null && statusPasswordView.getDataWarning().before(new Date())) {
model.addAttribute(MA_EXPIRE_DATE, dataScadenza);
if(redirect.equals("")) {
model.addAttribute("redirect", null);
}
else {
model.addAttribute("redirect", redirect);
}
return "/sso/password-toexpire";
}
...................................................................
...................................................................
...................................................................
}
所以,在前面的代码 sn-p 中可以看到,loginPost() 方法接收这个 String @ModelAttribute("redirect") String redirect 作为参数(这是我的控制器类的 @SessionAttributes,但我认为现在这并不重要)。
如果 redirect 变量的值是一个空字符串("" 字符串),我在模型中放入一个名为 redirect 且具有 null 的属性强> 作为价值。 否则,如果 redirect 字符串不是空字符串,我将其值作为前一个 redirect 模型属性的值。
然后进入我的 FreeMarker 页面(名为 password-toexpire.ftl)我会这样做:
<#if redirect??>
<a href="<@spring.url '/profilo/home' />" class="btn btn-block btn-success submit-btn">Continua la navigazione</a>
<#else>
<a href="${redirect}" class="btn btn-block btn-success submit-btn">Continua la navigazione</a>
</#if>
因此,在此页面中,我正在检查 redirect 属性是否为 null 或不将不同的元素呈现到我的最终 HTML 中。
唯一的问题是,当我的 password-toexpire.ftl 页面返回时,我在 Eclipse 堆栈跟踪中获得了这个错误消息:
14:48:44,092 ERROR [it.mycompany.myprogjet.mypackage.base.SsumExceptionHandlerControllerAdvise] (http-localhost/127.0.0.1:8080-1) Attribute value must not be null: java.lang.IllegalArgumentException: Attribute value must not be null
因此,在 Spring 中,我似乎无法将 null 属性放入 model 项目中,但这对我来说似乎很奇怪。
为什么?问题是什么?我错过了什么?我该如何解决这个问题?
【问题讨论】:
标签: spring spring-mvc freemarker