0


Hashtable の Vector を準備して JavaScript に戻る DWR 関数を書きたいのですが、JavaScript で Vector を反復処理して Hashtable の内容を出力する必要があります。

私のDWR機能は次のとおりです。

public Vector getEmployeeData() {
   Vector employeeData = new Vector();
   // some other content to prepare vector

   return employeeData;
}

そして、web.xml で dwr-servlet を適切に構成しました。dwr.xml のコンテンツは次のとおりです。

<create creator="new" javascript="Employee" scope="script">
  <param name="class" value="com.test.DWREmployeeManager"/>
</create>
<convert match="java.util.Hashtable" converter="bean"/>
<convert match="java.util.Vector" converter="bean"/>  

しかし、私の問題は、javascrit からこの dwr メソッドを呼び出したときに、dwr コールバック関数の結果として空の配列を取得していることです。

誰でもこの問題の解決策を提案できますか..

4

2 に答える 2

0

2つのタグを使用する代わりに、

<convert match="java.util.Hashtable" converter="bean"/>
<convert match="java.util.Vector" converter="bean"/>  

以下の変換タグを使用しました:

<convert converter="collection" match="java.util.Collection"/>

今では正常に動作しています。

ありがとう

于 2010-11-15T09:19:18.823 に答える
0

ここでの問題は、Collection オブジェクトを Bean として変換するように DWR に指示していることだと思います。これを行う必要はありませんし、したくもありません。これらは Bean ではなく、コレクションです。

参照: http://directwebremoting.org/dwr/server/dwrxml/converters/collection.html

さらに、上記の私のコメントのように、おそらく List (Array または Linked) と HashMap を使用する必要があります。Java 5 以降を使用している場合は、おそらく型宣言を追加する必要があります。

ここに私が提案するものがあります:(ハッシュテーブルコードを具体的に示していないので、文字列をキーにしたマップを想定しているだけです.)

public List<Map<String,EmployeeData>> getEmployeeData() {
    List<Map<String,EmployeeData>> employeeData = new ArrayList<Map<String,EmployeeData>>();
    // some other content to prepare list

    return employeeData;
}

dwr.xml で、2 つのコンバーター行を削除し、1 つ追加する必要があります。

<convert match="com.test.EmployeeData" converter="bean"/>

(そして、その Bean に適切な getter メソッドと setter メソッドがあることを確認してください)。

于 2010-11-08T03:12:08.270 に答える