Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring NullPointerException服务_Java_Spring_Hibernate_Struts2_Jpa 2.0 - Fatal编程技术网

Java Spring 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;

我正在尝试使用Spring3Struts2和Hibernate设置一个小型web应用程序,但是我做了一些错误的事情,我不知道它是什么,当我尝试调用Struts控制器中的服务层时,我得到了一个NullPointerException

实体:

@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" />