리턴값 변형 시키기 - TheOpenCloudEngine/metaworks GitHub Wiki
리턴 객체를 Popup 시키기
ServiceMethod 어노테이션의 target 옵션을 다르게 주면 팝업을 유도할 수 있다. 팝업되는 객체를 모달윈도우나 작은 Popup 등으로 포장하여 뛰우기 위해서는 관련한 팝업 컴포넌트들을 사용해야 한다.
public class Selection {
String contentClassName;
@Id
public String getContentClassName() {
return contentClassName;
}
public void setContentClassName(String contentClassName) {
this.contentClassName = contentClassName;
}
@ServiceMethod(target=ServiceMethod.TARGET_POPUP)
public ModalWindow select() throws InstantiationException, IllegalAccessException, ClassNotFoundException{
ModalWindow modalWindow = new ModalWindow();
modalWindow.setPanel(Class.forName("org.metaworks.example.navigation." + getContentClassName()).newInstance());
return modalWindow;
}
}
리턴 객체의 타입 변경에 의한 모델의 깨짐을 방지하는 방법
MetaworksRemoteService.wrapReturn 을 통하여 도메인 모델을 유지한채로 UI 래핑과 관련한 추가 코드를 주입할 수 있다. 예제는 UI가 없는 테스트 코드 등에서의 select() 메서드가 도메인 객체인 Content 를 그대로 리턴할 수 있도록 하여 도메인 모델의 의미(Semantic)를 유지할 수 있도록 해준다.
@ServiceMethod(target=ServiceMethod.TARGET_POPUP)
public Content select() throws InstantiationException, IllegalAccessException, ClassNotFoundException{
Content content = (Content)Class.forName("org.metaworks.example.navigation." + getContentClassName()).newInstance();
ModalWindow modalWindow = new ModalWindow();
modalWindow.setPanel(content);
MetaworksRemoteService.wrapReturn( modalWindow );
return content;
}