Использование вектора и Hashtable в качестве бона для DWR
-
28-09-2019 - |
Вопрос
Я хочу написать функцию DWR, которая готовит вектору Hashtable и возвращает к JavaScript и там в JavaScript, мне нужно повторять вектор и распечатать содержимое hashtable.
Моя функция DWR:
public Vector getEmployeeData() {
Vector employeeData = new Vector();
// some other content to prepare vector
return employeeData;
}
И я настроил DWR-сервлет в Web.xml правильно и содержимое в 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"/>
Но моя проблема заключается в том, что я назвал этот метод DWR от Javascrit, я получаю пустую массив в результате функции обратной связи DWR.
Может кто-нибудь предложить решение этой проблемы ..
Решение 2
Вместо того, чтобы использовать два тега,
<convert match="java.util.Hashtable" converter="bean"/>
<convert match="java.util.Vector" converter="bean"/>
Я использовал приведенную ниже тег:
<convert converter="collection" match="java.util.Collection"/>
Теперь его работает нормально.
Спасибо
Другие советы
Я подозреваю, что ваша проблема здесь заключается в том, что вы говорите DWR для преобразования объектов коллекции в качестве бобов. Вам не нужно делать это, и вы не хотите - они не бобы, они коллекции.
Видеть:http://directwebremoTing.org/dwr/server/dwrxml/Conververs/collection.html.
Более того, как в моем комментариев выше, вы, вероятно, хотите использовать список (массив или связанный), а hashmap. Если вы используете Java 5 или новее, вы, вероятно, должны добавлять типовые объявления.
Вот что я предлагаю: (вы специально не показать свой код HASHTABLE, поэтому я просто предполагаю, что на карте отображается какая-то строка.)
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 вам нужно удалить два конвертерных линий и добавить один:
<convert match="com.test.EmployeeData" converter="bean"/>
(И убедитесь, что есть правильные методы Gotter и Setter для этого компонента).