目标无法访问,标识符'注册'解析为null

时间:2014-12-24 15:35:21

标签: jsf cdi

我正在使用jsf开发一个Web应用程序,我试图对用户进行注册,但我遇到了一些问题。服务器告诉我,

  

500 - 内部服务器错误:目标无法访问,标识符'注册'解析为null

以下是代码:

registration.xhtml:

<?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://xmlns.jcp.org/jsf/html"
xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
  <h:head>
    <title>Registration</title>
    <link rel="stylesheet" href="css/registration.css"/>
    <link rel="stylesheet" href="css/application.css"/>
    <link href='http://fonts.googleapis.com/css?family=Dosis' rel='stylesheet' type='text/css'/>
    <link href='http://fonts.googleapis.com/css?family=Roboto+Condensed' rel='stylesheet' type='text/css' />
  </h:head>

  <h:body>

    <div id='menuBar'>
      <ul>
        <li><a href='index.xhtml'><span>Home</span></a></li>
        <li><a href='registration.xhtml'><span>Register</span></a></li>
        <li><a href='#'><span>About</span></a></li>
      </ul>
    </div>

    <div class='registration'>Registration</div>

    <div class='form-div'>
      <h:form class='form'>
        <div class='field'>
            <h:outputLabel a:id='fieldName' for="name">Name:</h:outputLabel>
            <h:inputText id='name' value="#{registration.user.name}" class='feedback-input'/>
        </div>
        <div class='field'>
            <h:outputLabel a:id='fieldName' for="surname">Surname:</h:outputLabel>
            <h:inputText id='surname' value="#{registration.user.surname}" class='feedback-input'/>
        </div>
        <div class='field'>
            <h:outputLabel a:id='fieldName' for="username">Username:</h:outputLabel>
            <h:inputText id='username' value="#{registration.user.username}" class='feedback-input'/>
        </div>
        <div class='field'>
            <h:outputLabel a:id='fieldName' for="email">Email:</h:outputLabel>
          <h:inputText id='email' value="#{registration.user.email}" class='feedback-input'/>
        </div>
        <div class='field'>
            <h:outputLabel a:id='fieldName' for="password">Password:</h:outputLabel>
            <h:inputText id='password' value="#{registration.user.password}" class='feedback-input'/>
        </div>
        <div class='field'>
            <h:outputLabel a:id='fieldName' for="confpassword">Confirm Password:</h:outputLabel>
            <h:inputText id='confpassword' class='feedback-input'/>
        </div>
        <div class='submit'>
          <h:commandButton type='submit' value='REGISTER' a:id='button-reg' action="#{registration.register()}"/>
        </div>
      </h:form>
    </div>

  </h:body>
</html>

Registration.java

package it.polimi.business.meteocal.boundary;

import it.polimi.meteocal.business.control.RegisterValidation;
import it.polimi.meteocal.business.entity.User;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

@Named
@RequestScoped
public class Registration {

    @EJB
    private RegisterValidation rv;

    private User user;

    public Registration() {}

    public User getUser() {
        if (user == null) {
            user = new User();
        }
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String register() {
        rv.createUser(user);
        return "/index.xhtml?faces-redirect=true";
    }
}

注册Validation.java

package it.polimi.meteocal.business.control;

import it.polimi.meteocal.business.entity.User;
import java.security.Principal;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
public class RegisterValidation {

    @PersistenceContext
    EntityManager em;

    @Inject
    Principal principal;

    public void createUser(User user) {
        em.persist(user);
    }

    public void unregister() {
        em.remove(getLoggedUser());
    }

     public User getLoggedUser() {
        return em.find(User.class, principal.getName());
    }   
}

你能帮助我吗?

0 个答案:

没有答案