2010-11-23 13 views
0

私はJSFフレームワークを試しています。私は初心者です。だから私は簡単にtutorialと始まります。これはコードです:(私はボタンをクリックします)、「あまり言葉」でJSF - 例login-ajax - なぜフォームを送信するのですか?

<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

ので呼び出すよりも、executeSETGETなどrenderとして変換されます。

私が知りたいのは、プロセスをよく理解している場合です。

私は誤解しています:クライアントからサーバーへのトラフィッキングをスキャンすると、クライアントからサーバーにform1、名前、およびパスワードを送信します(MAGICとして、名前とパスワードとして私によって挿入された価値を持っている)。

これはどのように可能ですか?

ありがとうございます!

答えて

1

これは魔法ではありません。それは正常です。これらの値はWebブラウザに入力されます。 JS/Ajaxはこれらの値にアクセスできます。 JS/Ajaxはそれらの値を一緒に送信します。新しく入力された値について、サーバー側/ JSFは他にどのように知っていますか?

+0

もちろんです。私は、AJAXは.setNameと.setPasswordが "実行"権利によって呼び出されたときにそれを送信すると思いますか?しかし、なぜそれは "フォーム"フィールドを送信するのですか?私は理解していません... – markzzz

+0

それはHTTPとHTMLによると普通です。隠されたすべての入力フィールドと押されたボタンもリクエストパラメータとして送信されます。このようにして、JSFは呼び出されたアクションを認識します。つまり、複数のフォームとコマンドボタン/リンクがあります。私は、JSFをダイビングする前にプレーンHTTP/HTMLで遊んでみることをお勧めします。 – BalusC

+0

ええと...私はPHP/JQuery approchから来ました。私はAJAX呼び出しを行うときには、フォーム/入力フィールド全体ではなく、いくつかのパラメータしか送信しません。おそらくこれはJSFの仕組みです。 – markzzz

関連する問題