0

EJB 3.1 と JSF 2.0 を使用して、Java EE 6 で小さなアプリケーションをテストしています。

問題は、EL 式を使用して JSF でバッキング Bean を呼び出し、アプリケーションを実行すると、このバッキング Bean にアクセスできず、null であるため、例外が発生することです。

画像を見る

ここに私のJSFコードがあります:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
        >

<h:head>
    <title>Insertar Usuarios</title>
</h:head>

<h:body>

    <h:form id="registro">

        <h:panelGrid columns="2">

            <h:outputText value="Username:"/>
            <h:inputText id="username" value="#{registro.usuario.user_Name}"/>

            <h:outputText value="Id:"/>
            <h:inputText id="id_user" value="#{registro.usuario.userId}"/>

            <h:outputText value="Mensaje:"/>
            <h:inputText id="mensaje" value="#{registro.usuario.userMessage}" required="true"/>

            <h:commandButton value="Crear usuario" action="#{registro.insertarUsuario()}" />
        </h:panelGrid>
        <h:messages/>

    </h:form>
</h:body>


</html>

これが私のステートレス EJB です。

 @Stateless
public class NegocioImpl implements Negocio{

    @PersistenceContext(unitName = "manager1")
    private EntityManager em;

    @Override
    public void sayHelloFromServiceBean(User user) {

        User u = em.find(User.class, user.getUserId());

        if(u != null){
            System.out.println("Cuenta existente");
        }

        em.persist(user);

    }

    public String hola(){
        return "hola";
    }
}

最後に、バッキング Bean:

    @Named
@RequestScoped
public class Registro {

    @Inject
    private Negocio negocio;

    private User usuario;

    public Registro(){

        usuario = new User();
    }

    public User getUsuario() {

        return usuario;
    }

    public void setUsuario(User usuario) {

        this.usuario = usuario;
    }

    public void insertarUsuario(){
        negocio.sayHelloFromServiceBean(usuario);
    }

    public void saluda(){
        negocio.hola();
    }
}

プロジェクトの構造は Intellij IDEA で作成されています。

プロジェクトの構造

前もって感謝します

4

0 に答える 0