내 응용 프로그램 중 하나에 대해 파슬리 3을 Flex 4 (AIR)와 함께 사용하고 있습니다. 원격 호출을 할 때 명령 클래스와 Java 계층 서비스에 도달하는 이벤트를 전달합니다. 여기까지 모든 것이 잘 작동합니다. Java 레이어는 일부 호출 등을 만들고 결과를 다시 반환하지만 결과 처리기 (또는 오류 처리기)는 제어를 다시 얻지 못합니다.결과 핸들러가 파슬리 3에서 컨트롤을 가져 오지 못함 Flex 4 (BlazeDS + Spring)에서 사용됨
Project
bin-debug
libs
parsley-core-3.0.0.swc
parsley-flex-3.0.0.swc
parsley-xml-3.0.0.swc
spicelib-commands-3.1.1.swc
spicelib-reflect-3.0.0.swc
spicelib-util-3.1.0.swc
spicelib-xml-mapper-3.0.2.swc
Main.mxml
ProjectEvent.as
LoadProjectsCommand
ProjectPM.as
및 기타 사항.
명령 클래스는 제어를 받고 Java 서비스를 호출 할 수 있습니다. 코드는 다음과 같습니다.
package
{
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.AsyncToken;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;
/*http://www.spicefactory.org/parsley/docs/3.0/manual/managedcommands.php*/
public class LoadProjectsCommand
{
[Inject(id="projectRemoteService")]
public var projectRemoteService:RemoteObject;
[Inject]
public var model:ProjectScreenPM;
public function execute(event:ProjectEvent):AsyncToken
{
return projectRemoteService.getAllProjectsWithSprintsInSystem() as AsyncToken;
}
public function result(event:ResultEvent):void
{
Alert.show("Result");
}
public function fault(event:FaultEvent):void
{
Alert.show("Fault in retrieving projects","Error");
}
}
}
Java 서비스 호출에서 모든 것이 올바른지 확인했습니다. 아무도 도와주지 못하니?
답변을 찾았습니다. 파슬리 3에서는 토큰에 응답자를 추가해야하는데 이제는 정상적으로 작동합니다. 그러나 놀랍게도,이 코드는 파슬리 2.4에서 잘 작동합니다. –
수동으로 응답자를 추가하면, 응답 메소드가 Parsley가 아니라 fault 메소드를 호출합니다. 이는 메모리 누수로 이어질 수있는 GC'd 명령을 초래하지 않기 때문에 적절한 해결책은 아닙니다. 또한 다른 [CommandResult] 또는 [CommandError] 핸들러는 호출되지 않습니다. 나는 2.4에서 3으로 업그레이드를하지 않았기 때문에 파슬리 포럼에 질문을 게시하는 것이 좋습니다. –
감사합니다. Marty, 나는 파슬리 포럼에 게시했습니다. –