gpt4 book ai didi

java - ModelAttribute 可以是原始的吗?

转载 作者:搜寻专家 更新时间:2023-10-31 20:06:06 24 4
gpt4 key购买 nike

我在使用 Spring MVC 3.0 中的 ModelAttribute 时遇到了一个奇怪的问题。当我在本地主机上部署应用程序时,它工作正常。但是当我在远程服务器上部署该应用程序时,每次用户访问特定操作时它都会失败,并出现错误:

ERROR: my.package.application.web.filter.ExceptionFilter - long.<init>()
java.lang.NoSuchMethodException: long.<init>()
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getDeclaredConstructor(Class.java:1985)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute(HandlerMethodInvoker.java:762)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:356)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:153)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

我用来在该 Controller 中初始化 ModelAttribute 的代码是:

    @ModelAttribute("id")
public long getUserId(HttpSession session) {
UserInfoHolder userHolder = (UserInfoHolder) session
.getAttribute("userHolder");
long userId = userHolder.getUserId();
return userId;
}

据我所知,该错误无法在我的本地工作站上重现。它发生在操作被调用之前。

查看 HandlerMethodInvoker.java(第 762 行),我们看到这一行:

bindObject = BeanUtils.instantiateClass(paramType);

我的一位经验丰富的同行认为这一行会导致问题,因为原始类型 ModelAttribute(long) 没有构造函数。我认为这个原因可能是正确的,但它如何解释 Web 应用程序在我的本地服务器上运行良好?

我试图搜索以了解 ModelAttribute 是否支持原始数据类型,但没有很好的结果。有没有人对这个问题有经验?

最佳答案

我只是抛出一些想法,希望它能有所帮助。

堆栈跟踪显示它确实在尝试长时间调用构造函数方法:

java.lang.NoSuchMethodException: long.<init>()

如果将使用的类型从 long 更改为 Long,是否有效?

至于在本地工作但在客户端不工作的事情。 Java版本是否相同?

关于java - ModelAttribute 可以是原始的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6675987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com