Spring MVC 5.3.2 java.lang.NullPointerException:无法调用,因为NULL
我知道我在这里做错了什么,但我想不通,我需要你的帮助。 我将简明扼要地直截了当地说: 存储库Spring MVC 5.3.2 java.lang.NullPointerException:无法调用,因为NULL,java,mysql,spring,nullpointerexception,spring-repositories,Java,Mysql,Spring,Nullpointerexception,Spring Repositories,我知道我在这里做错了什么,但我想不通,我需要你的帮助。 我将简明扼要地直截了当地说: 存储库 enter code here @Repository public interface TemplateRepository extends CrudRepository<Template, Integer>{ @Query("select t.temp_code From Template t where t.temp_area = ?1")
enter code here
@Repository
public interface TemplateRepository extends CrudRepository<Template, Integer>{
@Query("select t.temp_code From Template t where t.temp_area = ?1")
public String getTemplateCode(String temp_area);
}
控制器
@Controller
public class TemplateController {
@Autowired
static TemplateService templateservice;
public static String getLeftMenu() {
return templateservice.getLeftMenuArea();
}
}
JSP
....
<%
TemplateController tc = new TemplateController();
String test = tc.getLeftMenu();
pageContext.setAttribute("test", test);
%>
<div class="tinymce-single responsive-mg-b-30">
<div class="alert-title">
<h2>Notice</h2>
</div>
<div id="summernote1"> <c:out value="${test}" escapeXml="false" />
</div>
</div>
....
。。。。
通知
....
运行应用程序时,我收到以下错误消息:
SEVERE: Servlet.service() for servlet [spring] in context with path [/eFatura-CE-Systems] threw exception [Beim Verarbeiten von [/WEB-INF/views/index.jsp] ist in Zeile [1078] eine Ausnahme erzeugt worden
1075:
1076: <%
1077: TemplateController tc = new TemplateController();
1078: String test = tc.getLeftMenu();
1079:
1080: pageContext.setAttribute("test", test);
1081: %>
Stacktrace:] with root cause
java.lang.NullPointerException: Cannot invoke "de.efatura.service.TemplateService.getLeftMenuArea()" because "de.efatura.controller.TemplateController.templateservice" is null
at de.efatura.controller.TemplateController.getLeftMenu(TemplateController.java:16)
severy:Servlet[spring]的Servlet.service()与路径[/eftura CE Systems]的上下文中抛出异常[Beim Verarbeiten von[/WEB-INF/views/index.jsp]在Zeile[1078]中
1075:
1076:
Stacktrace:]具有根本原因
java.lang.NullPointerException:无法调用“de.efatura.service.TemplateService.getLeftMenuArea()”,因为“de.efatura.controller.TemplateController.TemplateService”为null
位于de.efatura.controller.TemplateController.getLeftMenu(TemplateController.java:16)
有没有人比我更好的办法使用Spring data JPA方法查询从MySQL数据库获取数据并将其输出到JSP文件中?主要原因是您正在JSP中手动创建一个新的
TemplateController
。如果您手动创建bean,Spring将不会帮助您自动注入其依赖项(在本例中为TemplateRepository
)。因此,它的依赖项为空,当您访问它时,NPE发生
当您想要使用bean而不是手动创建bean时,应该从spring上下文中获取TemplateController
。此外,将与JSP中的业务逻辑相关的java代码混合在一起,就像您现在所做的一样,被认为是业界最糟糕的做法之一
相反,您应该计算要在TemplateController
中显示的数据。将数据放入模型
/模型映射
/模型和视图
,然后使用EL表达式在JSP中访问它。类似于或
SEVERE: Servlet.service() for servlet [spring] in context with path [/eFatura-CE-Systems] threw exception [Beim Verarbeiten von [/WEB-INF/views/index.jsp] ist in Zeile [1078] eine Ausnahme erzeugt worden
1075:
1076: <%
1077: TemplateController tc = new TemplateController();
1078: String test = tc.getLeftMenu();
1079:
1080: pageContext.setAttribute("test", test);
1081: %>
Stacktrace:] with root cause
java.lang.NullPointerException: Cannot invoke "de.efatura.service.TemplateService.getLeftMenuArea()" because "de.efatura.controller.TemplateController.templateservice" is null
at de.efatura.controller.TemplateController.getLeftMenu(TemplateController.java:16)