调用托管属性的 getter 时出现 NPE

2023-12-05

我正在使用 Hibernate 学习 Spring,并使用 JSF 作为前端框架创建一个电影租赁应用程序。

我的注册 bean 中有一个应用程序范围的托管属性,它是视图范围的。在里面register()方法将用户详细信息插入数据库中,我调用服务定位器实现 bean 来获取对所需服务实现的引用。但是,当我调用服务定位器属性的 getter 时,我得到一个 NPE。

以下是我的管理豆...

注册Bean

@ManagedBean
@ViewScoped
public class RegistrationBean extends BaseBean implements Serializable
{
   private static final long serialVersionUID = -6449858513581500971L;

   private String userID;
   private String password;
   private String firstName;
   private String lastName;
   private String email;
   private String addressLine1;
   private String addressLine2;
   private String city;
   private String state;
   private String pincode;

   public RegistrationBean() {
      super();
   }

   // getter / setters...

   public String register() 
   {
      String nextPage = null;
      try {
         RegistrationDetails userDetails = ModelBuilder.populateRegistrationData(this);

         // NPE at this line. getServiceLocator() returns null
         int registrationID = getServiceLocator().getUserService().registerUser(userDetails);

         nextPage = "success";
      }
      catch (RegistrationException e) {
         LOGGER.error(e.getMessage());
      }
      return nextPage;
   }
}

基豆

public class BaseBean
{
   @ManagedProperty("#{serviceLocator}")
   protected IServiceLocator serviceLocator;

   protected IServiceLocator getServiceLocator() {
      return serviceLocator;
   }

   public void setServiceLocator(IServiceLocator serviceLocator) {
      this.serviceLocator = serviceLocator;
   }
}

服务定位器 Bean

@ManagedBean
@ApplicationScoped
public class ServiceLocator implements IServiceLocator
{
   private static final String USER_SERVICE = "userService";

   public ServiceLocator() {
      super();
      final ServletContext sc = FacesUtils.getServletContext();
      this.webAppContext = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);
      this.userService = (IUserService) webAppContext.getBean(USER_SERVICE);
   }

   private ApplicationContext webAppContext;

   private IUserService userService;

   @Override
   public IUserService getUserService() {
      return userService;
   }

   public ApplicationContext getWebAppContext() {
      return webAppContext;
   }
}

这是我的 Eclipse 控制台中看到的堆栈跟踪

Oct 14, 2012 10:28:39 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{registrationBean.register}: java.lang.NullPointerException
javax.faces.FacesException: #{registrationBean.register}: java.lang.NullPointerException
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    ... 23 more
Caused by: java.lang.NullPointerException
    at com.clixflix.managedbeans.RegistrationBean.register(RegistrationBean.java:118)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    ... 24 more

我在用

  • JSF 2.1(莫哈拉)
  • 休眠4.1
  • 春季3.2
  • 雄猫7
  • 日食3.7

如果我错过了什么,有人可以指出吗?

UPDATE:Spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

   <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
      <property name="configLocation" value="/WEB-INF/hibernate.cfg.xml" />
   </bean>

   <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
      <property name="sessionFactory" ref="sessionFactory" />
   </bean>

   <bean id="userDAO" class="com.clixflix.dao.impl.UserDAOImpl">
      <constructor-arg index="0" ref="hibernateTemplate" />
   </bean>

   <bean id="userService" class="com.clixflix.services.impl.UserService">
      <constructor-arg index="0" ref="userDAO" />
   </bean>

</beans>

这篇文章帮助我使代码正常工作:http://www.javacodegeeks.com/2012/04/jsf-2-primefaces-3-spring-3-hibernate-4.html

但是,如果我将注册 Bean 保留为view scoped。谁能帮我找出同样的原因吗?

更新:找到 ViewScope 问题的解决方案:http://blog.harezmi.com.tr/spring-view-scope-for-jsf-2-users/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调用托管属性的 getter 时出现 NPE 的相关文章

  • Thymeleaf 和 Spring 的布尔条件

    我想在我的网页中添加错误标志 如何使用 Thymeleaf 检查 Spring 模型属性是 true 还是 false 布尔文字是true and false 使用th if你最终会得到如下代码 div 或者如果您决定选择th unless
  • TomEE:- 引起:org.apache.xbean.asm5.MethodVisitor.visitTypeAnnotation 处的 java.lang.RuntimeException(来源未知)

    我有一个 spring mvc Web 应用程序 maven 它在 JDK 1 7 上完美运行 但当我尝试使用 1 8 时出现错误 类似问题问过here https stackoverflow com questions 22921889
  • 如何为用户的活动设置计时器?

    如果用户在 5 小时内停止工作 我需要执行特定的方法 假设用户已登录 但他在 5 小时内没有向数据库的特定表添加任何记录 任何时候用户将记录添加到指定的表中 该特定用户的计时器都应该重置 否则它将继续运行 如果达到 5 小时 应用程序应显示
  • spring中如何外部化配置?

    我正在尝试使用 spring 外部化配置 但无法使其正常工作 这是我到目前为止所做的 在 war 文件 src test resources 中为每个环境创建一个属性文件 例如 nonprod key properties prod key
  • 无法访问属性的默认字段

    我在将应用程序部署到 tomcat 时遇到问题 它以前可以工作 但我格式化了我的计算机 它就停止工作了 我的 pom xml
  • 设置 Spring REST 控制器基本 url 而不更改静态资源基本 url

    我有一个带有一堆休息控制器 RestController 的 Spring Boot 应用程序 我在中使用以下属性application properties文件设置基本 url server context path api 此属性也会更
  • Spring Boot RestTemplate 连接池:管理过时连接

    我使用 RestTemplate 和 ConnectionPooling 使用 PoolingHttpClientConnectionManager 如下代码所示 PoolingHttpClientConnectionManager con
  • CDI Bean 访问 Spring bean?

    我知道这听起来很奇怪 将 CDI 焊接 和 Spring 混合用于控制器 但想象一下这种情况 有了CDI 我可以利用 ConversationScoped 这是我的要求之一 到目前为止我不知道我是否可以在这种范围内使用spring 因为如果
  • 如何从 jQuery 获取 ajax 请求下载 Excel

    我有一个 Spring MVC 视图 它提供了一个 excel 文件 但是 我现在修改了该过程 以便用户获得一个模式框 他们可以在下载 excel 之前在其中选择一些选项 这些选定的选项将发送到视图 我的请求看起来像这样 get downl
  • 如何在 Spring boot 应用程序中使用禁用连接池?

    我在 Application java 中创建一个像这样的数据源 Bean ConfigurationProperties datasource public DataSource dataSource return DataSourceB
  • Spring/Rest @PathVariable 字符编码

    在我使用的环境 Tomcat 6 中 路径段中的百分比序列在映射到 PathVariable 时显然是使用 ISO 8859 1 进行解码的 我希望它是 UTF 8 我已经将 Tomcat 配置为使用 UTF 8 使用 server xml
  • Apache Tiles 退休了。备择方案?

    Apache Tiles 于 2018 年 12 月迁入阁楼 因此 Apache Tiles 已经退休 我正在使用 Spring MVC 框架和 JSP 还有哪些替代方案 我看到了Sitemesh 但它是一个装饰器 我需要一个模板框架 我想
  • Spring Boot 中的服务限流能力

    有什么办法可以实现Spring中其余服务的服务限制能力 特别是Spring boot 这里的期望是 我的服务暴露于外界 目前每秒 分钟的服务调用数量没有限制 我们希望通过设置限制来控制这一点 我有一个替代选项 通过跟踪并发哈希映射或任何缓存
  • Spring Kafka Acknowledgement.acknowledge 线程安全吗?

    我正在实现一个基于卡夫卡的应用程序 我想在其中手动确认传入消息 架构迫使我在单独的线程中完成它 问题是 在与消费者不同的线程中执行 Acknowledgement acknowledge 是否可能且安全 是的 只要你使用MANUAL并不是M
  • 没有字符串参数构造函数/工厂方法可以从字符串值 ('') 反序列化

    我在使用时遇到了 json 解析问题ObjectMapper类来自com fasterxml jackson databind包 我得到的错误是 com fasterxml jackson databind JsonMappingExcep
  • 使用 spring mvc 的多个域

    假设我有一个应用程序必须缩短 URL 但还要执行其他操作 喜欢google com and goo gl or facebook com and fb me 部署两个应用程序很容易 但 目前 仅部署一个应用程序更简单 使用 spring 和
  • spring-hibernate 花费更多时间的任何原因?

    目前 我正在春季和冬眠期间从事一个项目 我来到这里 获取记录并在 JSP 中显示这些记录需要更多时间 我在各处都保留了时间戳 以查看哪里花费了更多时间 Time HomeController start 2014 07 09 18 58 5
  • 如何设置 intellij 在日志选项卡而不是输出选项卡中显示日志

    当我使用 intellijs 12 1 4 内置 tomcat 时 日志将被写入调试面板的输出选项卡 而不是正常的本地主机日志选项卡 我跟着this http www jetbrains com idea webhelp run debug
  • 春季启动。在 RestController 上转发

    我正在实施一种替换短链接的机制 我需要将请求转发给另一个控制器 我找到了如何在模型上在 Spring 中执行此操作的示例 但我不明白如何在 RestControllers 中执行此操作 我发现的示例 使用模型 Controller publ
  • 在 Spring 应用程序中拥有 RestController 和 Controller 的最佳实践

    我不是问是不是possible 我知道是这样 但我想知道在我的应用程序中拥有前端的同时提供休息服务的最佳方式是什么 我正在开发一个 Spring Boot 应用程序 我目前有一个调用 jsp 页面的控制器 以及一个separate休息控制器

随机推荐

  • 打印给定月份/年份的日历

    我正在做一个 Java 作业 它涉及在用户指定月份和年份后打印日历 我无法使用 Calendar 或 GregorianCalendar 类 我的问题是日历无法正确打印月份的第一天是星期六 我已经查看了我的代码大约一个小时了 我不确定出了什
  • TLS 1.2 在 cURL 中不起作用

    我在卷曲使用 TLS1 2 的 HTTPS url 时遇到问题 在卷曲操作中 我将登录数据发布到网站并将其保存在 cookiefile 中 我收到的错误消息是这样的 error 14077438 SSL routines SSL23 GET
  • 使用 Python 读取 RTF 文件时出现欧元符号问题

    我需要使用 Python 和 pyRTF 生成 RTF 文档 一切正常 我对重音字母没有问题 它甚至接受欧元符号而没有错误 但不是 我得到这个标志 我用这种方式对字符串进行编码 x encode iso 8859 15 我用谷歌搜索了很多
  • 将大型 VB6 应用程序升级到 .NET。对VB迁移合作伙伴的看法

    我有一个非常大的 VB6 代码库 其中包含大量第 3 方控件 想要将其移至 NET 重写它是毫无疑问的 客户认为花钱获得同样的东西没有任何价值 使用内置升级向导迁移到 NET 基本上是不可能的 有没有人尝试过 VB Migration Pa
  • Windows 上的插入器

    是否可以替换系统函数 就像在 Linux 和 Solaris 上使用 LD PRELOAD 一样 例如通过设置环境变量 LD PRELOAD path to mymalloc so 我将替换 malloc 函数 而不是在已安装在系统库中的
  • 循环#includes是如何解决的?

    在c中 假设我们有2个文件 1 h include lt 2 h gt blah blah 我们有 2小时 include lt 1 h gt code 这是怎么解决的 通常 您使用与文件名相对应的 ifndef define 来保护包含文
  • 当数据可以包含逗号时,按逗号分割字符串

    我有一个 CSV 文件 不是我设计的 现在无法更改 也永远无法更改它 其中包含如下行 Surname Firstname yes no somestring whatever etc 正如你在这里看到的 第一个 不是我想要分割字符串的逗号
  • MediaPlayer 在 Android 5.0 (Lollipop) 中抛出错误

    我编写了一个使用 HTTP 连接传输 MP3 的媒体应用程序 这在 Android 版本 2 x 4 x 上运行良好 但现在在 5 x 中生成错误 该应用程序循环播放包含 MP3 的播放列表对象 每个 MP3 都有自己唯一的 HTTP 地址
  • 在AWS lambda中创建utils.py

    I had a def hello 功能在我的home file py文件 我创建了一个home common utils py文件并将函数移到那里 现在 我想将其导入到我的文件中file py 我是这样导入的 from utils imp
  • iPhone中有系统级后台队列进程吗?

    我需要保存一个大文件 有时需要很长时间才能完成 用户可能只是关闭应用程序 我想知道iPhone SDK是否可以接手这个未完成的大任务 看来iPhone自带的邮件系统可以后台发送 我准备了一封电子邮件 单击 发送 然后立即关闭邮件应用程序 在
  • 使用 Excel VBA 创建工作表并根据特定列中的唯一项目移动数据

    我熟悉编程 但不熟悉 VBA 或 Excel 对象模型 我发现处理起来非常令人沮丧 我拥有的是一张带有列标题的数据 根据数据类型的不同 标题的数量也不同 因此我需要找到一个特定的列 在所有工作表中 该列并不总是位于同一位置 因此我无法对其进
  • Python 简单指数平滑

    我从 www nasdaq com 下载了 TESLA 股票 下载 CSV 文件后 我意识到我需要使用 Microsoft Excel 2016 转换 CSV 我使用 数据 选项卡 并单击文本到列 现在标题很清楚了 它们是 日期 收盘价 成
  • 在 Woocommerce 中获取自定义产品属性

    在 Woocommerce 中 我试图获取产品自定义属性值 但失败得很惨 我什么也没得到 所以我尝试 global woocommerce post product res get post meta product gt id print
  • CMake 设置默认搜索路径?

    我只是不想每次需要库时都设置环境变量 更不用说搜索的路径根本不标准化 至少在 Windows 上 一般来说 Find cmake 不会指定任何与 Windows 相关的位置 有没有某种方法可以使 CMake 搜索指定目录 强制配置错误的 F
  • 在Java中求多项式的根

    我需要找到一个 近似的 数值的 解勒让德多项式 我尝试了几个Java库 但没有一个有我正在寻找的东西 最接近的是commons math 它甚至有用于在拉盖尔求解器 但它没有公开该方法 是否有现有的解决方案或者我需要实施自己的解决方案 您可
  • Xamarin 中的调用目标引发了异常

    这是代码 运行它看看有什么问题 gt https github com x0axz CustomRenderer 在我的 Xamarin 应用程序中 有一个适用于 Android 的自定义相机渲染器 它是从ViewModel通过Messag
  • 如何在Python中导入类型提示的类?

    我有一个代码 from pandas import DataFrame def func df DataFrame gt DataFrame 因为我实际上并没有在代码中创建 DataFrame 对象 所以我想做 from typing im
  • 在其中创建 Angular 生命周期挂钩的 Highcharts 实例

    我目前正在使用 Angular 7 高图表API 我使用以下方法集成了 Highcharts官方 Github 链接 有一个callbackFunction在 Highcharts 中我们可以使用它来获取图表实例 但是 我还没有弄清楚两件事
  • 如何选择要在 TensorBoard 的嵌入选项卡中查看的检查点?

    简短的问题 如何选择在 TensorBoard 的嵌入选项卡中查看哪个检查点 问题的较长版本 我想用 TensorBoard 可视化词嵌入 为此 在阅读完官方教程 mirror 我添加了以下代码 embedding writer tf su
  • 调用托管属性的 getter 时出现 NPE

    我正在使用 Hibernate 学习 Spring 并使用 JSF 作为前端框架创建一个电影租赁应用程序 我的注册 bean 中有一个应用程序范围的托管属性 它是视图范围的 在里面register 方法将用户详细信息插入数据库中 我调用服务