6

JSF2、PrimeFaces、および Highcharts を一緒に使用した人はいますか? 特にサーバーからデータを取得してビューのハイチャートにフィードし、チャートを更新するという ajax リクエストに関して、これらすべてをどのようにまとめるべきかについて本当に混乱しています。

私が今持っているのは、JQuery.ajax() メソッドを使用して送信され、JQuery を使用して JSON オブジェクトとして受信した新しいデータでチャートを更新する Ajax 要求を処理するサーブレットです。また、GSon.toJSon を使用して Java オブジェクトを JSON オブジェクトに変換しています。

ここで達成しようとしているのは、そのサーブレットを JSF2 に置き換えたいということです。別のサーブレットを使用する代わりに、JSF を使用し、JSON オブジェクトを準備してクライアントに送信するためのバッキング Bean を用意したいと考えています。

誰か?

4

1 に答える 1

7

以下の例では、p:commandButton が ajax リクエストを開始します。使用する JSON オブジェクトは、h:inputHidden フィールドに格納できます。p:commandButton が完了すると、javascript 関数が呼び出されてグラフが更新されます。javascript 関数は、h:inputHidden フィールドから JSON オブジェクトにアクセスできるようになります。

xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">

    <h:head>
        <script type="text/javascript">           
            function dosomething() {
                var value = jQuery("#beanvalue").attr('value');
                alert(value);
            }
        </script>
    </h:head>
    <h:body>
        <h:form prependId="false" >
            <p:commandButton value="update" action="#{testBean.update}" update="beanvalue" oncomplete="dosomething();" />
            <h:inputHidden value="#{testBean.output}" id="beanvalue"  />
        </h:form>
    </h:body>
</html>

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class TestBean {

    private String output;

    public TestBean() {
        output = "1";
    }

    public void update() {
        output += "1";
    }

    public String getOutput() {
        return output;
    }

    public void setOutput(String output) {
        this.output = output;
    }
}
于 2011-05-14T14:27:06.377 に答える