我是 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";
}
...................................................................
...................................................................
...................................................................
}
因此,正如您在前面的代码片段中看到的那样, loginPost() 方法接收此字符串 @ModelAttribute("redirect") String redirect 作为参数(这是我的控制器类的 @SessionAttributes ,但我认为现在这并不重要) .
如果 redirect 变量的值是一个空字符串(“”字符串),我在模型中放入一个名为 redirect 的attribite,其值为 null . 否则,如果 redirect 字符串不是空字符串,我将其值作为前一个 redirect 模型属性的值 .
然后进入我的 FreeMarker 页面(名为 password-toexpire.ftl )我做:
#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 onject中,但它对我来说似乎很奇怪 .
为什么?问题是什么?我错过了什么?我该如何解决这个问题?