2015-06-14 3 views
0

У меня есть немного странная проблема с управляемым сеансовым компонентом. Я новичок в jsf, и это выглядит странно. Дело в следующем: loginBean хранит некоторые переменные, которые инициализируются после успешного входа в систему. Вначале они инициализируются, но после успешного входа пользователь перенаправляется на страницу profile.xhtml, в которой я вызываю эти переменные из loginBean. На этой странице переменные из loginBean равны нулю. Поэтому я теряю все данные после перенаправления.Sessioncoped управляемый bean-компонент, не сохраняющий переменные jsf

loginBean:

package beans; 

import facades.ContactFacade; 
import facades.UsersFacade; 
import java.io.Serializable; 
import javax.ejb.EJB; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import model.Contact; 

@ManagedBean(name="loginBean") 
@SessionScoped 

public class LoginBean implements Serializable{ 
    @EJB 
    private ContactFacade contactFacade; 
    @EJB 
    private UsersFacade usersFacade; 

private String Name; 
private String Password; 
private int ContactID; 
private Contact contact; 

public LoginBean() { 

} 

public Contact getContact() { 
    return contact; 
} 

public void setContact(Contact contact) { 
    this.contact = contact; 
} 
public String getName() { 
    return Name; 
} 

public void setName(String Name) { 
    this.Name = Name; 
} 

public String getPassword() { 
    return Password; 
} 

public void setPassword(String Password) { 
    this.Password = Password; 
} 
public int getContactID() { 
    return ContactID; 
} 

public void setContactID(int ContactID) { 
    this.ContactID = ContactID; 
} 

private boolean checkValidity(){ 
    return (
      (getName()!=null&&getName().length()>0) 
      &&(getPassword()!=null&&getPassword().length()>0)) 
      ?true:false; 
} 
public String login(){ 
    if(checkValidity()&&usersFacade.tryLogin(getName(), getPassword())){ 
     setContactID(usersFacade.getContactID(getName())); 

     getContactInstance(); 
     return "profile.xhtml?faces-redirect=true"; 
    }else{ 
     return "loginError.xhtml?faces-redirect=true"; 
    } 
} 

private void getContactInstance(){ 
    setContact(contact); 
    this.contact=contactFacade.getContact(getContactID()); 
} 

public String getDepartment(){ 
    return contactFacade.getDepartmentName(getContact().getDepartment()); 
} 
} 

profile.xhtml JSF

<h:form> 
     <h2>My information</h2> 
     <h:panelGrid columns="2"> 
      <h:outputLabel value="Name:"/> 
      <h:outputLabel value="#{loginBean.contact.name}"/> 

      <h:outputLabel value="Lastname:"/> 
      <h:outputLabel value="#{loginBean.contact.lastname}"/> 

      <h:outputLabel value="Address:"/> 
      <h:outputLabel value="#{loginBean.contact.address}"/> 

      <h:outputLabel value="Telephone:"/> 
      <h:outputLabel value="#{loginBean.contact.telephone}"/> 

      <h:outputLabel value="Email:"/> 
      <h:outputLabel value="#{loginBean.contact.email}"/> 

      <h:outputLabel value="Department:"/> 
      <h:outputLabel value="#{loginBean.department}"/> 

      <h:commandButton id="btnChange" value="Change Info" /> 


     </h:panelGrid> 

    </h:form> 

Это довольно странно для меня. Может ли кто-нибудь помочь? Заранее спасибо

ответ

2

Может быть, вы переопределили боб в лицах-cofig.xml? Если так, бит, определенный в xml, будет иметь более высокий приоритет, а аннотация будет проигнорирована.

+0

Да, действительно. Я не переопределял faces-config, но я изменил тип компонента (ранее созданный в качестве запроса, я новичок), а в лицевой конфигурации область по-прежнему была как запрос. Спасибо что подметил это. –

+0

У меня есть аналогичная проблема с другим bean-компонентом. У меня есть регистрационная форма, значения входного поля которой не хранятся в компоненте. Я попытался добавить его теперь в face-config как новый элемент, но все тот же вопрос. Любой отзыв? –

Смежные вопросы