Java Spring NullPointerException服务
我正在尝试使用Spring3Struts2和Hibernate设置一个小型web应用程序,但是我做了一些错误的事情,我不知道它是什么,当我尝试调用Struts控制器中的服务层时,我得到了一个NullPointerException 实体:Java Spring NullPointerException服务,java,spring,hibernate,struts2,jpa-2.0,Java,Spring,Hibernate,Struts2,Jpa 2.0,我正在尝试使用Spring3Struts2和Hibernate设置一个小型web应用程序,但是我做了一些错误的事情,我不知道它是什么,当我尝试调用Struts控制器中的服务层时,我得到了一个NullPointerException 实体: @Entity(name="T_Personne") public class Personne { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id;
@Entity(name="T_Personne")
public class Personne {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(nullable=false,length=30)
private String nom;
}
道:
服务:
@Service(value="personneService")
@Transactional
public class PersonneServiceImpl implements IPersonneService {
@Autowired
private IPersonneDao personneDao;
public void savePersonne(Personne per) {
personneDao.save(per);
}
}
控制器:
public class HelloAction extends ActionSupport{
@Autowired
private IPersonneService personneService;
public String execute() throws Exception{
Personne p = personneService.findPersonneById(1L);
System.out.println("Nom : "+ p.getNom() + "Prenom : "+ p.getPrenom());
return SUCCESS;
}
}
Spring XML:
<context:annotation-config />
<context:component-scan base-package="net.cadr" />
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" id="entityManagerFactory">
<property name="persistenceUnitName" value="MyPersistenceUnit"/>
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
Struts XML:
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="personne" extends="struts-default">
<action name="Hello" class="net.cadr.actions.HelloAction">
<result name="success">/views/hello.html</result>
</action>
</package>
</struts>
/views/hello.html
问题是实体管理器创建了表,struts控制器也在工作,我可以映射动作并调用它们
我错过了什么
谢谢这是因为您的控制器可能没有Springbean(spring默认情况下不使用Struts,而是使用自己的框架:SpringMVC) 如果将Spring与Struts一起使用,则应将以下代码添加到Struts配置中:
<constant name="struts.objectFactory"
value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
@请参见您从何处获得
NPE
?您的人员服务没有findPersonById
方法。您确定代码已编译,还是没有发布正确的代码?您好,我在这一行Personne p=personeservice.findPersonneById(1L)中得到了异常;谢谢其中一个是第18行?嗨,第18行是:Personne p=personeservice.findppersonbyid(1L);从2.3.x开始,只需插入插件@LukaszLenart:你的意思是它不需要吗?参考(黄色框)“但是,如果您想使用Spring注入您的操作,选项就在那里。”这意味着您不必在Spring配置中定义每个操作。并且:要启用Spring集成,只需在应用程序中包含struts2-Spring-plugin-x-x.jar即可。如果要使用多个对象工厂(例如,通过在应用程序中同时包含Spring和Plexus插件),则需要在struts.properties中或通过常量在多个XML文件中设置struts.objectFactory属性
<constant name="struts.objectFactory"
value="org.apache.struts2.spring.StrutsSpringObjectFactory" />