1、打开浏览器窗口常用于超链接
/** * 重新打开浏览器弹出页面 * * @param url 网络地址 * @param blank;打开类型,可以是"_blank","_self"等 */ public void onSendRedirect(String url, String blank) { Executions.getCurrent().sendRedirect(url, blank); }例子:
if(reportInfo==null){ onSendRedirect( "/designer.zul","_self"); }else{ Executions.getCurrent().sendRedirect( "/designer.zul?reporturl=" + reportInfo.getDir() + "/" + reportInfo.getFileName(), "_self"); }2、主窗体与弹出子窗体之间传值刷新问题
主窗体java代码
public class ListBusinessModel extends Window implements AfterCompose { private static final long serialVersionUID = 1L; public void afterCompose() { initPage(); } /** * 初始化问题 */ public void initPage() { } /** * 添加函数 */ public void add() { try { AddBusinessModel wnd = (AddBusinessModel) Executions.createComponents( "/pages/systemManage/business/addBusinessModel.zul", ListBusinessModel.this, null); wnd.doModal(); } catch (SuspendNotAllowedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 修改函数 */ public void edit() { try { Treeitem item = ((Tree)getFellow("tree")).getSelectedItem(); if(item==null||item.getParentItem()==null){ Message.showInfo("请选择一个业务模型."); }else{ BusinessModel model = irbm.getBusiModel(item.getId()); Map map = new HashMap(); map.put("bmodel", model); map.put("dsId", item.getParentItem().getId()); EditBusinessModel wnd = (EditBusinessModel) Executions.createComponents( "/pages/systemManage/business/editBusinessModel.zul", ListBusinessModel.this, map); wnd.doModal(); } }catch (SuspendNotAllowedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
添加窗体代码,注意如何刷新主窗体
public class AddBusinessModel extends Window implements AfterCompose { private static final long serialVersionUID = 1L; /* (non-Javadoc) * @see org.zkoss.zk.ui.ext.AfterCompose#afterCompose() */ public void afterCompose() { initPage(); } /** * 初始化函数 */ public void initPage() { } /** * 保存函数 */ public void save() { //do something this.refresh(); this.detach(); } /** * 刷新函数 */ public void refresh() { ListBusinessModel bmWn = (ListBusinessModel)this.getParent(); bmWn.initPage(); } }修改窗体,观察如何传值和接受值
public class EditBusinessModel extends Window implements AfterCompose { private static final long serialVersionUID = 1L; //参数的获取方法 String dsId = (String)Executions.getCurrent().getArg().get("dsId"); BusinessModel model = (BusinessModel)Executions.getCurrent().getArg().get("bmodel"); public void afterCompose() { //do something } /** * 保存 */ public void save() { //do something this.refresh(); this.detach(); } /** * 刷新 */ public void refresh() { ListBusinessModel bmWn = (ListBusinessModel)this.getParent(); bmWn.initPage(); } }
3.通过设置include对象的src属性给hostAdd.zul页面传递参数。
设置要传入的参数例如: m_includeHost .setSrc("/pages/hostMan/hostAdd.zul ?mode=wizard&hostGroupType=monitorhostgroup"); 在hostAdd.zul后台类中获取参数mode例如: String m_mode = Executions.getCurrent().getParameter("mode");6、局部刷新问题
Include geronimoInc = (Include) Path .getComponent("//mainPage/geronimoMainWnd/geronimoInc"); String rootPath = Paths.getPagePath(); Date time = new Date(); geronimoInc.setSrc(rootPath + "/pages/JEEService/databaseManager/databaseList.zul?" + time.getTime());7.添加监听方法
方法1
this.addEventListener("onOK", new EventListener() { public void onEvent(Event e){ matchBeforAdd(); }});
方法2
使用org.zkoss.zk.ui.Component接口中的addEventListene和removeEventListener方法 来动态地添加或移除事件监听器。 如下所示,动态添加的事件监听器必须实现org.zkoss.zk.ui.event.EventListener接口。 void init(Component comp){ ... comp.addEventListener("onClick", new MyListener()); ... } class MyListener implements org.zkoss.zk.ui.event.EventListener { public void onEvent(Event event) throws UiException{ //事件处理 } }8、转到另一个servlet
例如: Executions.sendRedirect("/welcome"); 在web.xml里面定义该serverlet 例如: <servlet> <servlet-name>welcome</servlet-name> <servlet-class> com.cvicse.inforguard.common.context.WelcomeServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>welcome</servlet-name> <url-pattern>/welcome</url-pattern> </servlet-mapping> com.cvicse.inforguard.common.context.WelcomeServlet类定义为: /* * 把请求导向首页面index.zul */ public class WelcomeServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { if (req != null && req.getSession() != null && req.getSession().getAttribute(AuthenticationFilter.USER_KEY) != null && req.getSession().getAttribute(AuthenticationFilter.USER_KEY).equals("anonymity")){ req.getSession().removeAttribute(AuthenticationFilter.USER_KEY); } RequestDispatcher rd = req.getRequestDispatcher("/pages/index.zul"); rd.forward(req, res); } }
