- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 RobotLegs、LiveCycle DS 和 Java 开发 Flex 应用程序。我正在尝试使用 LCDS 实现更新功能,但遇到了一些奇怪的行为:
这是 RobotLegs 的 execute
命令中的 ActionScript 代码,用于执行更新:
var token:AsyncToken = services.requestService.commit(new Array(model.currentRequestDetail));
responder = new AsyncResponder(resultHandler, faultHandler, token);
if ( token ) token.addResponder(responder);
我尝试更新的 model.currentRequestDetail
是一个 RequestDetail 对象:
[Managed]
[RemoteClass(alias="be.fgov.mobilit.td.lcds.vo.RequestDetail")]
public class RequestDetail {
public var id:Number;
public var request:Request;
public var task:Task;
/**
* Constructor
*/
public function RequestDetail() {
}
}
第一次执行 Actionscript 代码时,一切正常。AsyncToken 由 services.requestService.commit()
函数很好地返回,resultHandler 按预期执行,并且我的对象在 GUI 中更新。
但是,第二次执行此代码时,我的 services.requestService.commit()
函数返回 null 值,并且我的 resultHandler 永远不会到达。我怀疑我们甚至还没有到达 java 汇编器。
这就是我声明 DataService 的方式:
var requestDetailService:DataService = new DataService("requestDetail");
requestDetailService.autoCommit = false;
resultHandler 和 failureHandler 都有正确的签名:
resultHandler(result:Object, token:Object = null)
faultHandler(result:Object, token:Object = null)
我们还使用自定义 java 汇编器,这是代码:
package be.fgov.mobilit.td.lcds.assemblers;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import be.fgov.mobilit.td.lcds.vo.RequestDetail;
import flex.data.ChangeObject;
import flex.data.assemblers.AbstractAssembler;
public class RequestAssembler extends AbstractAssembler {
public RequestAssembler() {
// TODO Auto-generated constructor stub
}
public RequestDetail getRequest(Map<String, Object> identity) {
return ServiceUtility.getLcdsService().getRequestDetail(identity);
}
public List<ChangeObject> syncRequest(List<ChangeObject> changes) {
Iterator<ChangeObject> iterator = changes.iterator();
ChangeObject co;
while (iterator.hasNext()) {
co = (ChangeObject) iterator.next();
if (co.isUpdate()) {
co = doUpdate(co);
}
}
return changes;
}
private ChangeObject doUpdate(ChangeObject co) {
RequestDetail requestDetail = (RequestDetail) co.getNewVersion();
co.setNewVersion(ServiceUtility.getLcdsService().updateRequestDetail(requestDetail));
return co;
}
}
这是汇编器的配置:
<destination id="request">
<properties>
<source>be.fgov.mobilit.td.lcds.assemblers.RequestAssembler</source>
<scope>application</scope>
<metadata>
<identity property="id" />
<identity property="task" />
</metadata>
<server>
<get-method>
<name>getRequest</name>
</get-method>
<sync-method>
<name>syncRequest</name>
</sync-method>
</server>
</properties>
</destination>
长话短说:
有谁有线索/经验,为什么我第二次执行 services.requestService.commit();
函数它返回 null Asynctoken?
提前谢谢!
根据要求,我从我的服务类中添加了(删除的)代码。正如您所看到的,没有什么特别的事情发生:
package be.fgov.mobilit.services {
import mx.data.DataService;
import mx.messaging.Consumer;
import mx.messaging.events.MessageEvent;
import mx.rpc.http.HTTPService;
public class LiveCycleServices {
public var requestService:DataService;
public function LiveCycleServices() {
requestService = new DataService("request");
requestService.autoCommit = false;
}
/**
* @param MessageEvent The event object that is dispatched by the Flex framework
* @return void
*
* This message captures the server push messages that need to trigger an update
* of the task list, since this is specific for every client and cannot be
* determined on the server side, coming from LiveCycle.
*/
private function messageHandler(event:MessageEvent):void {
taskListService.refresh();
}
}
}
这是添加我的结果和故障处理程序的代码:
var token:AsyncToken = services.requestService.commit(new Array(model.currentRequestDetail));
var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, token);
if ( token ) token.addResponder(responder);
最佳答案
当您没有要提交的更改时,aysnctoken 返回 null。希望这会有所帮助。
关于java - 弹性 : LCDS Service returning null Asynctoken when executed 2nd time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8617644/
我是 Flex 新手,我似乎无法让它工作。本质上,我有一个选择框,它的可用数据依赖于另一个组合框。 每个CategoryType中有多个TreatmentType。 这是我的代码: 组合框更改;更新选
寻找有关如何实现返回 AsyncToken 的方法的示例或文档链接。 请注意,这与使用/使用返回 AsyncToken 的方法无关!我希望自己编写这样的方法。 最佳答案 实现一个返回 AsyncTok
我试图了解 AsyncToken 在 actionscript 中的工作方式。如何调用远程服务并确保特定参数在结果或故障事件函数中可用?我认为这是我想要使用的异步功能。 下面的代码有望解释我正在尝试做
使用欧芹,我有一项服务,我通过[命令(选择器='列表')]公共(public)函数 getRssFeed(msg:RssEvent):AsyncToken{返回 service.list() 作为 A
我正在使用 RobotLegs、LiveCycle DS 和 Java 开发 Flex 应用程序。我正在尝试使用 LCDS 实现更新功能,但遇到了一些奇怪的行为: 这是 RobotLegs 的 exe
我是一名优秀的程序员,十分优秀!