JSF - 示例login-ajax - 为什么要发送表单?

时间:2010-11-23 14:33:17

标签: ajax jsf

我正在尝试JSF框架。我是初学者。所以我从一个简单的tutorial开始。这是代码:

<h:form id="form1" prependId="false">
    <h:outputScript name="jsf.js" library="javax.faces" target="head" />

    <h:inputText value="#{user.name}" id="name"/>
    <h:inputSecret value="#{user.password}" id="password"/>
    <h:outputText value="#{user.greeting}" id="out"/>

    <br/>

    <h:commandButton value="Login" type="button" onclick="jsf.ajax.request(this, event, {execute: 'name password', render: 'out'}); return false;" />
</h:form>

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

@ManagedBean(name = "user")
@RequestScoped
public class UserBean {
   private String name = "";
   private String password;

   public String getName() { return name; }
   public void setName(String newValue) { name = newValue; }

   public String getPassword() { return password; }
   public void setPassword(String newValue) { password = newValue; }

   public String getGreeting() {
       if(name.length()==0) {
           return "Inserisci nickname";
       } else {
           return "Benvenuto "+name;
       }
    }
} 

在“少词”中(当我点击按钮时):

1 - 感谢execute: 'name password,我使用异步调用调用setNamesetPassword(JavaBean方法);

2 - 感谢render: 'out'我致电getGreeting

因此,execute将翻译为SET,将render翻译为GET

我想知道的是,如果我完全理解这个过程。

因为我有一个误解:如果我从客户端扫描traffik到服务器,我看到(通过ajax调用)它从客户端发送到form1,名称和密码(并且,作为MAGIC,名称和密码有得到了我插入的价值。)

那怎么可能呢?

感谢所有人!

1 个答案:

答案 0 :(得分:1)

这不是魔术。这很正常。这些值在webbrowser中输入。 JS / Ajax可以访问这些值。 JS / Ajax将发送这些值。服务器端/ JSF如何知道新输入的值?