首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么以及如何回应OpenDolphin 'ValueChanged‘的确认

为什么以及如何回应OpenDolphin 'ValueChanged‘的确认
EN

Stack Overflow用户
提问于 2013-09-17 18:27:21
回答 1查看 237关注 0票数 1

我有一个简单的grails /groovyfx应用程序,其中openDolphin用于客户机/服务器通信。

下面是发生的情况:当CMD_LOG命令从客户端发送到服务器时,服务器更新presentationModel的一个值并作出响应:什么?OpenDolphin再做一个动作,客户端发送'ValueChanged‘确认,服务器授权它,并响应空命令,然后客户端接收它。

我的问题是,我如何实现对'ValueChanged‘的自定义响应,例如在DB中检查相应的值,或者客户机是否允许更改它。当我没有实施它的时候,为什么会有反应呢?我觉得在我无法控制的情况下发送空信息不是件好事。

一点代码,在客户端,这个闭包在按下按钮时被调用:

代码语言:javascript
复制
def sendToServer = { message ->
    clientDolphin.send(message, new OnFinishedHandlerAdapter() {
        @Override
        public void onFinished(List<ClientPresentationModel> presentationModels) {
            // after action on server, this wants to read changed presentation model
            }
        }
    });
}

客户日志:

代码语言:javascript
复制
INFO: C: sending batch of size 1
IX 17, 2013 7:46:59 ODP. java_util_logging_Logger$info$0 call
INFO: C:           -> Command: CMD_LOG
IX 17, 2013 7:46:59 ODP. org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrap invoke
INFO: C: server responded with 2 command(s): [ValueChanged, Whats up?]
IX 17, 2013 7:46:59 ODP. org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrap invoke
INFO: C: updating 'x' id '0' from 'null' to '10'
IX 17, 2013 7:46:59 ODP. java_util_logging_Logger$info$0 call
INFO: C: sending batch of size 1
IX 17, 2013 7:46:59 ODP. java_util_logging_Logger$info$0 call
INFO: C:           -> Command: ValueChanged attr:0, null -> 10
IX 17, 2013 7:46:59 ODP. org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrap invoke
SEVERE: C: cannot handle unknown command 'Command: Whats up?'
IX 17, 2013 7:47:00 ODP. org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrap invoke
INFO: C: server responded with 0 command(s): []

服务器端,相应的动作处理程序:

代码语言:javascript
复制
class SimpleStoreServerDirector extends DolphinServerAction {
    @Override
    void registerIn(ActionRegistry actionRegistry) {

        actionRegistry.register "CMD_LOG", { NamedCommand command, response ->
            def pm = serverDolphin.findPresentationModelById("input")
            changeValue pm["x"], 10

            response.add(new NamedCommand("Whats up?"))
        }
}

最后,服务器日志:

代码语言:javascript
复制
Creating new Dolphin session
LOG: proccessing Command: CreatePresentationModel pmId input pmType null  attributes [[id:0, propertyName:x, tag:VALUE, value:null, qualifier:null]]
LOG results: []
LOG: proccessing Command: CMD_LOG
LOG results: [Command: ValueChanged attr:0, null -> 10, Command: Whats up?]
LOG: proccessing Command: ValueChanged attr:0, null -> 10
LOG results: []

寻求答案,或任何有用的文档或教程参考资料。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-17 19:53:03

问:我如何实现对' ValueChanged‘的自定义响应? A:和任何其他命令一样,您可以为ValueChanged命令注册一个处理程序。有关示例,请参见共享tacho演示

问:为什么一个空洞的回应会被发送?答:这是StoreValueChangeAction的行为,这是默认操作之一。它将值更改存储在模型存储中,因为每个请求都必须返回一些内容,所以它返回空命令列表。

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

https://stackoverflow.com/questions/18857227

复制
相关文章

相似问题

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