자식 창을 닫는 동안 부모 창을 새로 고치려면 ZK로 구현하고 싶습니다.ZK : 자식 창을 닫을 때 부모 창 새로 고침
parent.zul -이 드롭 다운에 값을 추가하기위한 드롭 다운과 버튼 (드롭 다운에 추가로 레이블 지정)이 있습니다. 이 버튼을 클릭하면 드롭 다운에 텍스트를 입력 할 수있는 자식 winow가 열립니다.
child.zul :이 입력란에는 드롭 다운 값과 'CLOSE'버튼을 입력 할 수 있습니다. 닫기 버튼을 클릭하면 하위 창을 닫고 상위 창에서 드롭 다운을 새로 고쳐야합니다.
미리 감사드립니다.
============================================== ============================
부모 : sock.zul
<window id="sockWindow" title="New Sock" width="600px" apply="SockController" mode="modal" closable="true">
<div align="left" style="float: left;" >
<button id="btnLookup" label="Manage Lookup" width="150px"/>
</div>
</window>
sockController.java : 공개 클래스 SockController가 SelectorComposer를 확장 {
@Listen("onClick = button#btnLookup")
public void onClickAdd() throws Exception {
showPopup(new EventListener<Event>() {
@Override
public void onEvent(final Event event) throws Exception {
Object someData = event.getData(); // cast to whatever object you expect to give.
//Make your refresh code here.
}
});
}
public static void showPopup(final EventListener<Event> eventListener)
throws InterruptedException {
//you can give more params with the method to add them as arguments.
Map arguments = new HashMap<String, String>();
arguments.put("source", "parent.zul");
// arguments.put("hid", hwid.toString());
// arguments.put("displaymode", displaymode);
openModal("/managelookup.zul",null, arguments, eventListener);
}
public static void openModal(final String page, final Component parent,
final Map<String, Object> obMap,
final EventListener<Event> onCloseListener)
throws InterruptedException {
for (final Map.Entry<String, Object> entry : obMap.entrySet()) {
Executions.getCurrent().setAttribute(entry.getKey(),
entry.getValue());
}
Executions.getCurrent().setAttribute(Composition.PARENT, null);
final Component createComponents = Executions.createComponents(page,
parent, obMap);
Component parent1 = createComponents;
parent1 = getWindow(parent1);
if (parent1 instanceof Window) {
final Window window = (Window) parent1;
if (onCloseListener != null) {
//attach the listener so when popup is closed the listener is called.
window.addEventListener(Events.ON_CLOSE, onCloseListener);
window.addEventListener(Events.ON_CANCEL, onCloseListener);
}
window.doModal();
}
}
}
아이 : m anagelookup.zul :
<button id="cancel" label="Close"/>
</window>
ManageLookupsController.java : 공공 ManageLookupsController()이 예외를 throw {
@Listen("onClick = button#cancel")
public void onClickCancel() {
manageLookup.setVisible(false);
manageLookup.detach();
Events.postEvent(Events.ON_CLOSE, windowOrSpaceOwner, someData);
}
은}
코드를 제공해 주셔서 감사합니다. 코드를 사용하여 코드를 조정했습니다. 게시물에 붙여 넣었습니다. 아직 작동하지 않습니다. 네가 끝까지 달려 주실 수 있니? – Jim
답장을 보내 주셔서 감사합니다. 귀하의 의견에 따라 코드를 업데이트했습니다. 아직 작동하지 않습니다. 네가 끝까지 달려 주실 수 있니? 오류 메시지 (메소드를 찾을 수 없음)를 표시하는 getWindow (parent1) 행이 있습니다. – Jim
죄송합니다. 부모 컴포넌트가 아닌 클래스 윈도우를 확인하는 메소드입니다. 그렇지 않으면 부모가 null이거나 윈도우가 발견 될 때까지 getWindow를 다시 입력하십시오. – chillworld