2010-06-05 87 views
0

我正在尋找一種方式來使用來自服務器的XML響應來填充ListGrid。smartGWT:從服務器檢索數據以填充列表GridGrid

這是我的服務器響應的一個例子:

<?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); 
     } 
} 

現在我不想使用該文件,但我正在尋找一種方法直接從服務器檢索數據。任何人都知道我如何得到這個?

回答

1

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

1

我第二埃弗裏特託斯,您可以設置數據的URL

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

所有你現在要做的是讓你傳遞給servlet的參數(在這種情況下,「查詢」)和閱讀其值。根據其值可以修改,如響應:

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>