JSF2, PrimeFaces и Highcharts - Ajax - PullRequest
6 голосов
/ 14 мая 2011

Кто-нибудь использовал JSF2, PrimeFaces и Highcharts вместе? Я действительно запутался в том, как мне все это собрать, особенно в том, что касается ajax-запроса на получение данных с сервера для передачи в Highcharts в представлении для обновления диаграммы.

Сейчас у меня есть сервлет, который обрабатывает запрос Ajax, который отправляется с использованием метода JQuery.ajax () и использует JQuery для обновления диаграммы новыми данными, полученными в виде объекта JSON. И я использую GSon.toJSon для преобразования объекта Java в объект JSON.

Здесь я пытаюсь добиться того, чтобы я хотел заменить этот сервлет на JSF2. Вместо того, чтобы использовать другой сервлет, я хочу использовать JSF и иметь некоторый вспомогательный компонент для подготовки и отправки объекта JSON клиенту.

Кто-нибудь?

1 Ответ

7 голосов
/ 14 мая 2011

В приведенном ниже примере команда p: commandButton запускает запрос ajax. Объект JSON, который вы хотите использовать, может быть сохранен в поле h: inputHidden. Когда p: commandButton завершает работу, вызывается функция javascript для обновления диаграммы. Функция javascript сможет получить доступ к объекту JSON из поля h: inputHidden.

* 1004 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>

Bean

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;
    }
}
...