我正在使用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());
}
}
你能帮助我吗?