首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DWR 3和Spring 4

DWR 3和Spring 4
EN

Stack Overflow用户
提问于 2017-05-05 09:05:39
回答 1查看 800关注 0票数 0

我对DWR 3和Spring 4有个问题,这让我抓狂。

有一个类有两个方法:

代码语言:javascript
运行
复制
package xxx.dwr.services;

@RemoteProxy
public class UnitsService extends DwrSupport {
    @RemoteMethod
    public List<UnitTreeNode> searchTreeNodes(UnitTreeSearchQuery query) {
        ...
    }
    @RemoteMethod
    public List<UnitTreeNode> getTreeNodes(String parentNodeId, String clientIdString,boolean searchInHistory) {
        ...
    }
}

当我单击菜单打开单元树页面时,调用了getTreeNodes,并且它运行良好,我可以看到树。树可以被过滤,在这种情况下,应该调用searchTreeNodes方法,但是我在浏览器中看到的只有一个javascript警告对话框,上面写着'Error‘。

在浏览器的控制台中,我可以看到以下内容:

代码语言:javascript
运行
复制
dwr.engine._debug @ engine.js:984
dwr.engine.defaultErrorHandler @ engine.js:215
(anonymous) @ engine.js:1121
logHandlerEx @ engine.js:2553
handleException @ engine.js:1107
(anonymous) @ VM1365:9
(anonymous) @ VM1365:10
dwr.engine._executeScript @ engine.js:720
stateChange @ engine.js:1791
batch.req.onreadystatechange @ engine.js:1664
Error: undefined, Error

不是很多信息..。

所以我可以调用一个方法,而不是在同一个类中调用另一个方法!

数据传输对象如下(带有getter和setter的普通bean):

代码语言:javascript
运行
复制
package xxx.dwr.services.dto;
@DataTransferObject
public class UnitTreeNode {
    ....
}

package xxx.dwr.services.dto;
@DataTransferObject
public class UnitTreeSearchQuery {
    private UnitTreeSearchQueryField field;
    private String input;
    private String clientId;
    private boolean searchInHistory;
    ...
}

package xxx.dwr.services.dto;
@DataTransferObject(converter = EnumConverter.class)
public enum UnitTreeSearchQueryField {
    EXTID,
    DISPLAYNAME,
    ABBRNAME,
    NAME,
    REMARKS,
    LOCATION,
    STATE
}

相关的servlet配置:

代码语言:javascript
运行
复制
<servlet>
    <servlet-name>DwrServlet</servlet-nam1e>
    <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>allowScriptTagRemoting</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <!-- disabled due to reverse proxy setup -->
        <param-name>crossDomainSessionSecurity</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <!-- suppress the about DWR url -->
        <param-name>url:/about</param-name>
        <param-value>null</param-value>
    </init-param>
</servlet>

来自context.xml

代码语言:javascript
运行
复制
<dwr:configuration/>
<dwr:annotation-scan base-package="xxx.dwr.services" scanDataTransferObject="true" scanRemoteProxy="true" />

所以我完全不知道会出什么问题。Spring配置应该很好,因为我可以从web应用程序调用其中一个方法。

你能帮帮我吗?

谢谢,

V。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-09 07:12:52

不知道为什么,但我不能将参数作为对象发送。现在我执行以下操作(传递简单参数):

代码语言:javascript
运行
复制
@RemoteMethod
public List<UnitTreeNode> searchTreeNodes(String field, String input, String clientId, String searchInHistory) {

而且起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43800801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档