smartGWT:从服务器检索数据以填充listGrid

时间:2010-06-05 14:42:20

标签: java smartgwt

我正在寻找一种方法来使用来自服务器的XML响应来填充ListGrid。

这是我服务器响应的一个示例:

<?xml version="1.0" encoding="UTF-8"?>
  <tbody id="tbody">
    <tr>
      <word>The</word>
      <frequence>12</frequence>
    </tr>
    <tr>
       <word>best</word>
       <frequence>3</frequence>
    </tr>
    ...

这就是我可以使用我保存xml结果的文件(item.xml)填充ListGrid的方法:

public class Frequenze extends DataSource {
    private static Frequenze instance = null;

      public static Frequenze getInstance() 
      {
        if (instance == null) {
            instance = new Frequenze("frequence");
        }
        return instance;
      }

      public Frequenze(String id) 
      {
            setID(id);
            setRecordXPath("//tr");
            DataSourceTextField wordField = new DataSourceTextField("word", "Word");
            wordField.setRequired(true);

            DataSourceIntegerField frequenceField = new DataSourceIntegerField("frequence", "Frequence");
            frequenceField.setRequired(true);

            setFields(wordField, frequenceField);

            setDataURL("ds/item.xml");
            setClientOnly(true);
      }
}

现在我不想使用该文件,但我正在寻找一种直接从服务器检索数据的方法。有人知道我是怎么做到的吗?

2 个答案:

答案 0 :(得分:1)

您可以考虑在服务器上创建一个Servlet,它根据请求中的查询参数使用XML进行响应。

答案 1 :(得分:1)

我是第二个Everett Toews,您可以将data-url设置为

"http://yourServer:8080/webappName/servletName?query=yourQuery"

现在你要做的就是获取传递给servlet的参数(在本例中为“query”)并读取其值。根据其值,您可以修改响应,如:

PrintWriter out = resp.getWriter();
out.print(xml);
out.flush();

编写这样的servlet非常简单 - 只需扩展javax.servlet.http.HttpServlet类并实现javax.servlet.Servlet类。

通过覆盖doGet()方法,您可以做任何您想做的事情。

您可能要做的最后一件事是在web.xml中创建一个servlet-mapping,如

<servlet>
    <servlet-name>myXmlServlet</servlet-name>
    <servlet-class>your.package.servlets.MyXMLServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>myXmlServlet</servlet-name>
    <url-pattern>/query2xml</url-pattern>
</servlet-mapping>