簡體   English   中英

smartGWT:從服務器檢索數據以填充listGrid

[英]smartGWT: retrieve data from server to populate a listGrid

我正在尋找一種使用服務器的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);
      }
}

現在,我不想使用該文件,但是我正在尋找一種直接從服務器檢索數據的方法。 有人知道我怎么得到這個嗎?

您可以考慮在服務器上創建一個Servlet,該Servlet基於請求中的查詢參數以XML進行響應。

我第二個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映射,例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM