私は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
のおかげで、私は非同期呼び出しでsetName
とsetPassword
(JavaBeanメソッド)を呼び出します。
2 - 、render: 'out'
のおかげで、私はgetGreeting
ので呼び出すよりも、execute
はSET
とGET
などrender
として変換されます。
私が知りたいのは、プロセスをよく理解している場合です。
私は誤解しています:クライアントからサーバーへのトラフィッキングをスキャンすると、クライアントからサーバーにform1、名前、およびパスワードを送信します(MAGICとして、名前とパスワードとして私によって挿入された価値を持っている)。
これはどのように可能ですか?
ありがとうございます!
もちろんです。私は、AJAXは.setNameと.setPasswordが "実行"権利によって呼び出されたときにそれを送信すると思いますか?しかし、なぜそれは "フォーム"フィールドを送信するのですか?私は理解していません... – markzzz
それはHTTPとHTMLによると普通です。隠されたすべての入力フィールドと押されたボタンもリクエストパラメータとして送信されます。このようにして、JSFは呼び出されたアクションを認識します。つまり、複数のフォームとコマンドボタン/リンクがあります。私は、JSFをダイビングする前にプレーンHTTP/HTMLで遊んでみることをお勧めします。 – BalusC
ええと...私はPHP/JQuery approchから来ました。私はAJAX呼び出しを行うときには、フォーム/入力フィールド全体ではなく、いくつかのパラメータしか送信しません。おそらくこれはJSFの仕組みです。 – markzzz