为什么在提交Form元素之前调用JSF2 Bean类中的getter?

时间:2014-08-17 18:39:03

标签: forms jsf-2

我在页面上有一个简单的JSF2.0,如下所示:

<h:body> 
    <div><center><h1><big><u>Java Learning Center</u></big></h1></center></div>
    <h2><big><a>Account Login</a></big></h2>
    <h:outputText value="#{userBean.errorMessage}" style="color:red; text-size:20"/>
    <h:form>
        <h:panelGrid id="loginPanel" columns="3">
            <h:outputText value="Username" />
            <h:inputText value="#{userBean.username}" id="username" required="true" />
            <h:message for="username" style="color:red; text-size:18"/>
            <h:outputText value="Password" />
            <h:inputSecret value="#{userBean.password}" id="password" required="true" />
            <h:message for="password" style="color:red; text-size:18"/>
            <h:commandButton value="Login" action="#{userBean.verifyUser()}" />
        </h:panelGrid>
    </h:form>
</h:body>

对应的JSF2 Bean类如下所示:

@ManagedBean(name="userBean")
@SessionScoped
public class UserBean {
    private String username;
    private String password;
    private String errorMessage;
    //setters and getters
    public String verifyUser() {
      //User verification logic
    }
}

现在,当第一次呈现表单页面时,我在控制台中得到输出:

getErrorMessage()...
getUsername()...
getPassword()...

我的问题是:

1。为什么在提交表单页面之前调用这些 getter 方法?

当我最终提交带有值的表单页面时,控制台输出如下:

getUsername()...
getPassword()...
setUsername()...
setPassword()...
verifyUser()...

在这里,

2。为什么在setter之前调用getter?。在我看来,应该首先调用setter。

0 个答案:

没有答案