会话范围的受管 Bean 不保存变量 jsf



我对托管会话范围的 bean 有一个有点奇怪的问题。我对 jsf 很陌生,这看起来很奇怪。案例是:loginBean 存储一些成功登录后初始化的变量。第一次,它们被初始化,但在成功登录后,用户被重定向到配置文件.xhtml页面,我在其中从loginBean调用这些变量。在此页面中,来自登录 Bean 的变量为空。所以我在重定向后丢失了所有数据。

登录豆:

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());
}
}

简介.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>

这对我来说很奇怪。谁能帮忙?提前致谢

难道你已经覆盖了面孔中的豆子-无花果.xml?如果是这样,则 xml 中定义的 Bean 将具有更高的优先级,注释将被忽略。

相关内容

  • 没有找到相关文章