JSF 2.0では、Ajaxをコーディングするのは通常のHTMLタグをコーディングするのと同じですが、非常に簡単です。このチュートリアルでは、//jsf2/jsf-2-0-hello-world-example/[JSF 2.0 hello worldの例]という最後のリンクを再構成して、ボタンをクリックするとAjaxリクエストを作成します全体のフォームを提出する代わりに。

1. JSF 2.0のページ

AjaxをサポートするJSF 2.0 xhtmlページ

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">

    <h:body>
        <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-format="fluid"
     data-ad-layout="in-article"
     data-ad-client="ca-pub-2836379775501347"
     data-ad-slot="6894224149"></ins>
<script>
     (adsbygoogle = window.adsbygoogle ||[]).push({});
</script><h2>JSF 2.0 + Ajax Hello World Example</h2>

        <h:form>
           <h:inputText id="name" value="#{helloBean.name}"></h:inputText>
           <h:commandButton value="Welcome Me">
             <f:ajax execute="name" render="output"/>
           </h:commandButton>

           <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-2836379775501347"
     data-ad-slot="8821506761"
     data-ad-format="auto"
     data-ad-region="mkyongregion"></ins>
<script>
(adsbygoogle = window.adsbygoogle ||[]).push({});
</script><h2><h:outputText id="output" value="#{helloBean.sayWelcome}"/></h2>
        </h:form>

    </h:body>
</html>

この例では、ボタンAjaxableを作成します。ボタンをクリックすると、フォーム全体を送信するのではなく、サーバーにAjaxリクエストを行います。

<h:commandButton value="Welcome Me">
    <f:ajax execute="name" render="output"/>
</h:commandButton>
<h:outputText id="output" value="#{helloBean.sayWelcome}"/>

  • <f:ajax> ** タグの場合:


    1. execute = “name”

      – ”

      name

      “のIDを持つフォームコンポーネントを示します.

処理のためにサーバーに送信されます。複数のコンポーネントの場合、間にスペースを入れて分割するだけです(例:

execute = “name anotherId anotherxxId”

)。この場合、テキストボックス値を送信します。


  1. render = “output”

    – Ajaxリクエストの後、

idが ”

output

“のコンポーネントです。この場合、Ajaxリクエストが終了すると、

<h:outputText>

コンポーネントがリフレッシュされます。

2. ManagedBean

  • #\ {helloBean} ** の例を参照してください。

  • HelloBean.java **

package com.mkyong.common;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import java.io.Serializable;

@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private String name;

    public String getName() {
       return name;
    }
    public void setName(String name) {
       this.name = name;
    }
    public String getSayWelcome(){
      //check if null?
       if("".equals(name) || name ==null){
        return "";
       }else{
        return "Ajax message : Welcome " + name;
       }
    }
}

3.それはどのように機能するのですか?

jsf2-ajax-hello-world-example-1、title = “jsf2-ajax-hello-world -example-1 “、width = 640、height = 295]

ボタンをクリックすると、Ajaxリクエストが行われ、処理のためにテキストボックス値がサーバーに渡されます。その後、

outputText

コンポーネントをリフレッシュし、

page flippingエフェクト

なしで

getSayWelcome()

メソッドを介して値を表示します。

jsf2-ajax-hello-world-example-2、title = “jsf2-ajax-hello-world -example-2 “、width = 640、height = 283]

ソースコードをダウンロードする

ダウンロードする –

JSF-2-Ajax-Hello-World-Example.zip

(8KB)


ajax


hello world

リンク://タグ/jsf2/[jsf2]