我正在尝试使用 Spring 3 Struts 2 和 Hibernate 设置一个小型 Web 应用程序,但我做错了一些事情,我无法弄清楚它是什么,当我尝试调用 struts Controller 中的服务层时,我得到一个 NullPointerException .
实体:
@Entity(name="T_Personne")
public class Personne {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(nullable=false,length=30)
private String nom;
}
道:
@Repository(value="personneDao")
public class PersonneDaoImpl implements IPersonneDao{
@PersistenceContext
private EntityManager em;
public void setEntityManager(EntityManager entityManager) {
this.em = entityManager;
}
public void save(Personne per) {
em.persist(per);
}
}
服务:
@Service(value="personneService")
@Transactional
public class PersonneServiceImpl implements IPersonneService {
@Autowired
private IPersonneDao personneDao;
public void savePersonne(Personne per) {
personneDao.save(per);
}
}
Controller :
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>
问题是实体管理器创建表,struts Controller 也正在工作,我可以映射操作并调用它们!!!
我缺少什么?
谢谢
最佳答案
这是因为你的 Controller 很可能没有 spring bean(Spring 默认不使用 Struts,而是使用自己的框架:Spring-MVC)。
如果您将 Spring 与 Struts 一起使用,那么您应该将此行添加到您的 struts 配置中:
<constant name="struts.objectFactory"
value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
关于java - Spring NullPointerException 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203468/