Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未保存Jsf属性_Java_Jsf_Lifecycle - Fatal编程技术网

Java 未保存Jsf属性

Java 未保存Jsf属性,java,jsf,lifecycle,Java,Jsf,Lifecycle,我真的不明白为什么这个简单的东西不起作用。我可以看到,每次设置一个属性时,都会调用构造函数。问题是,当我到达sendInvitation方法时,所有invitatedemail都是空的 @Named(value = "adminBean") @RequestScoped public class AdminBean implements Serializable { private String inviteEmail1; private String inviteEmail2

我真的不明白为什么这个简单的东西不起作用。我可以看到,每次设置一个属性时,都会调用构造函数。问题是,当我到达sendInvitation方法时,所有invitatedemail都是空的

@Named(value = "adminBean")
@RequestScoped
public class AdminBean implements Serializable {

    private String inviteEmail1;
    private String inviteEmail2;
    private String inviteEmail3;
    private BasicUser administrator;
    @EJB
    private MessageBeanRemote messageBean3;

    /** Creates a new instance of AdminBean */
    public AdminBean() {
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().
                getExternalContext().getSession(true);
        LoginBean loginBean = (LoginBean) session.getAttribute("loginBean");
        administrator = loginBean.getUser();
    }

    public String getInviteEmail1() {
        return inviteEmail1;
    }

    public void setInviteEmail1(String inviteEmail) {
        this.inviteEmail1 = inviteEmail;
    }

    public String getInviteEmail2() {
        return inviteEmail2;
    }

    public void setInviteEmail2(String inviteEmail) {
        this.inviteEmail2 = inviteEmail;
    }

    public String getInviteEmail3() {
        return inviteEmail3;
    }

    public void setInviteEmail3(String inviteEmail) {
        this.inviteEmail3 = inviteEmail;
    }

    public void sendInvitations() { 
    ...
    }
}
使用此bean的页面是另一个页面的组件:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <ui:component id="adminComp">
        <h3>Adminstration page</h3>
        <h:form id="inviteForm">
            <h:panelGrid columns="1">
                Invite new members to your group. Type in their emails in the fields below.
                <h:inputText id="email1" value="#{adminBean.inviteEmail1}" size="40"/>
                <h:inputText id="email2" value="#{adminBean.inviteEmail2}" size="40"/>
                <h:inputText id="email3" value="#{adminBean.inviteEmail3}" size="40"/>
                <h:commandButton value="invite" action="#{adminBean.sendInvitations}"/>
            </h:panelGrid>
        </h:form>
    </ui:component>


</html>

任何帮助都是值得的。

我不知道名为
@的
的东西在那里做什么,但是每次被值表达式访问时构造bean是不正常的。它应该在HTTP请求的开头只构造一次。可能
@Named
后面的配置是错误的

尝试使用
@ManagedBean
以JSF方式声明bean,并确保
@RequestScoped
也来自
javax.faces.bean

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class AdminBean implements Serializable {
    // ...
}

除了这个问题之外,不建议您使用获取会话范围bean的方法。正常的JSF方式如下所示:

@ManagedProperty(value="#{loginBean}")
private LoginBean loginBean;
如有必要,使用以下吸气剂

public BasicUser getAdministrator() {
    return loginBean.getUser();
}

我不知道名为
@的东西在那里做什么,但是每次被值表达式访问时构造bean是不正常的。它应该在HTTP请求的开头只构造一次。可能
@Named
后面的配置是错误的

尝试使用
@ManagedBean
以JSF方式声明bean,并确保
@RequestScoped
也来自
javax.faces.bean

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class AdminBean implements Serializable {
    // ...
}

除了这个问题之外,不建议您使用获取会话范围bean的方法。正常的JSF方式如下所示:

@ManagedProperty(value="#{loginBean}")
private LoginBean loginBean;
如有必要,使用以下吸气剂

public BasicUser getAdministrator() {
    return loginBean.getUser();
}

这是因为当我创建新的ManagedBean时,我的netbeans自动创建了@Named。我一直忽略这些事情:)这是因为我的netbeans在我创建新的ManagedBean时自动生成了@Named。我只是一直忽略这些事情:)