当前位置: 首页 > 知识库问答 >
问题:

为什么在Spring MVC模型对象中输入空值时会出现此错误?JAVAlang.IllegalArgumentException:属性值不能为null

谢旭
2023-03-14

我对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()方法将此String@ModelAt0016(重定向)String重定向(这是我的控制器类的@Session属性,但我认为现在这并不重要)作为参数接收。

如果redirect变量的值是一个空字符串(“字符串”),我在模型中放入一个名为redirect的属性,该属性的值为null。否则,如果重定向字符串不是空字符串,我将其值作为上一个重定向模型属性的值。

然后进入我的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>

因此,在本页中,我正在检查重定向属性是否为空,以将不同的元素呈现到最终的超文本标记语言中。

唯一的问题是,当我的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中,但对我来说这似乎很奇怪。

为什么啊?到底是什么问题?我错过了什么?我如何解决这个问题?

共有1个答案

干永丰
2023-03-14

几点注意:

  • 如果希望模型属性为空,则不需要手动将null放入其中。最好省略整个属性
  • 在模板中,您检查属性是否存在(非空)-但在else分支中(如果您确定重定向不存在),您仍在为

也代替重定向??对于存在性检查,您可以将空字符串传递给属性,并使用重定向?has_content相反,如果属性不存在,则返回false,为null或为空(在String的情况下,其长度为零)。

 类似资料:
  • 我只想用hadoop mapreduce来排序我的日志行。我将该行的所有字段作为输出键,并将输出值设置为null。但是当运行时,在第行出现空指针异常 所以为什么hadoop映射的输出值不能为空?为什么hadoop reduce的输出值可以(我测试过)?

  • 问题内容: 当我执行以下代码时,输​​出为“ nullHelloWorld”。Java如何处理null? 问题答案: 您正在尝试将值连接到。这由“字符串转换”控制,当一个操作数是a时发生,该转换被JLS的5.1.11节覆盖: 现在只需要考虑参考值: 如果引用为null,则将其转换为字符串“ null”(四个ASCII字符n,u,l,l)。

  • 问题内容: 我有一个类MyThread。在那我有一个方法示例。我试图从相同的对象上下文中运行它。请看一下代码: 看起来很简单,不是吗。但是当我运行它时,我得到这个错误 现在,我就在那里使用该方法。那怎么了 请帮忙 编辑:这是堆栈跟踪 我这样称呼它 抱歉,我无法发布redisOps类代码。但我可以向您保证,它的效果很好 问题答案: 您的缩进已弄糟,并且您混用了制表符和空格。运行脚本进行验证。

  • 问题内容: 我正在尝试使用DB2运行一个简单的SQL语句,并且遇到了一些问题。我想在txt / db2文件中有一个脚本,并让引擎处理所有命令 这是脚本: 当我运行db2 -f / pathtofile时,我得到: 我究竟做错了什么?我的脚本有问题吗?另外,为什么没有“;”也能正常工作 我的陈述结尾处的终止符? 谢谢, 问题答案: 可能会有帮助, http://www.uc.edu/R/r25/do

  • 问题内容: 当用户向我的API注册时,他们将返回一个用户对象。在返回对象之前,我删除了散列的密码和salt属性。我必须用 因为当我尝试 对象属性仍然存在并返回。 这是为什么? 问题答案: 要使用它,您需要通过调用将模型文档转换为普通的JavaScript对象,以便您可以自由地操作它:

  • 问题内容: 刚开始。遇到此错误,也没有运气找到原因或原因: 如果创建一个结构,显然可以分配和重新分配值,这没有问题: 但是如果结构是映射中的一个值: 我懂了。就是这样,没有其他信息。http://play.golang.org/p/VRlSItd4eP 我找到了解决方法- 在Person上创建一个func,可以将其调用并将结果分配给map键,例如。 但是,我的问题是,此“无法分配”错误的原因是什么