- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法通过包含的 .zul 页面中的 id 访问组件。我有一个带有 Controller 的 main.zul,我需要通过 java Controller 类在包含的 zul 页面中获取一个组件,但它返回 null。
我知道包含的方法会创建新的 id 空间,但是有什么方法可以获取这个组件吗?
更新
这是我的代码:
zul 主页
<?page title="DealerVizard.zul"?>
<?page id="main" ?>
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="./Dealer" ?>
<zk>
<style src="/resources/css/default.css" />
<window id="Dealer" class="index"
apply="com.i2i.prm.controller.IndexController">
<div class="content" width="100%">
<tabbox id="tb" forward="onSelect=onSelect">
<tabs id="tabs">
<tab id="info" label="INFO" />
<tab id="create" label="CREATE" />
<tab id="edit" label="EDIT" />
<tab id="test" label="TEST PANEL(LIST BOX)" />
</tabs>
<tabpanels>
<tabpanel id="DealerInfo">
<include id="DealerInfoContent"
src="View/Dealer/DealerInfo.zul" />
</tabpanel>
<tabpanel id="DealerCreate">
<include id="DealerCreateContent"
src="View/Dealer/DealerCreate.zul" />
</tabpanel>
<tabpanel id="DealerEdit">
<include id="DealerEditContent"
src="View/Dealer/DealerEdit.zul" />
</tabpanel>
<tabpanel id="PagingListBox">
<include id="PagingListBoxContent" // Included here
src="View/TEST/PagingListBox.zul" />
</tabpanel>
</tabpanels>
</tabbox>
</div>
</window>
</zk>
PagingListBox.zul(包含页面)
<?page id="list" ?>
<zk>
<grid width="100%">
<columns>
<column label="" />
</columns>
<rows>
<row>
<listbox id="listModel" width="100%" height="100%"
visible="true" span="true" pagingPosition="top" rows="20"
selectedItem="@{DealerController.selected}"
model="@{DealerController.userList}"
forward="onSelect=//main/Dealer.onSelect">
<auxhead>
<auxheader colspan="1">
<textbox
value="@{DealerController.searchUser.name}" maxlength="9"
id="searchCO_ID" forward="onChanging=//main/Dealer.onSearch"
width="100%">
</textbox>
</auxheader>
<auxheader colspan="1">
<textbox
value="@{DealerController.searchUser.surname}" maxlength="21"
id="searchMSISDN" forward="onChanging=//main/Dealer.onSearch"
width="100%">
</textbox>
</auxheader>
<auxheader colspan="1">
</auxheader>
</auxhead>
<listhead>
<listheader label="Name"
sort="auto(UPPER(name))" />
<listheader label="Surname"
sort="auto(UPPER(surname))" />
<listheader label="Delete ?" />
</listhead>
<listitem self="@{each=USERLIST}">
<listcell>
<label value="@{USERLIST.user.name}" />
<textbox
value="@{DealerController.tmpUser.name}" visible="false" />
</listcell>
<listcell>
<label value="@{USERLIST.user.surname}" />
<textbox
value="@{DealerController.tmpUser.surname}" visible="false" />
</listcell>
<listcell>
<button label="Update"
forward="onClick=//main/Dealer.onUpdate" visible="false" />
<button image="icons/edit-delete.png"
label="Delete" forward="onClick=//main/Dealer.onDelete"
width="100%" disabled="true" />
<button label="Save"
forward="onClick=//main/Dealer.onSave" visible="false" />
<button label="Cancel"
forward="onClick=//main/Dealer.onCancel" visible="false" />
</listcell>
</listitem>
</listbox>
<paging id="pagingData" pageSize="20" />
</row>
</rows>
</grid>
</zk>
IndexCONtroller.java
public class IndexController extends GenericForwardComposer {
private List<User> userList = new ArrayList<User>() ;
AnnotateDataBinder binder;
Tabbox tb;
Window Dealer;
private int pageCount=0;
@Override
public void doAfterCompose(Component comp) throws Exception {
// TODO Auto-generated method stub
super.doAfterCompose(comp);
comp.setVariable(comp.getId() + "Controller", this, true);
binder = (AnnotateDataBinder) Dealer.getVariable("binder", true);
System.out.println(Path.getComponent("//list/listModel"));
}
public IndexController() {
// TODO Auto-generated constructor stub
}
}
最佳答案
通常我不建议使用 Path.getComponent()
方式来访问其他组件,因为您的应用程序代码与 View 页面中的组件结构紧密耦合。在您的情况下,您最简单的方法是使用 AbstractComponent#getFellow(String compId)
方法,例如。
Include inc = (Include) Dealer.getFellow("PagingListBoxContent");
Listbox listModel = (Listbox) inc.getFellow("listModel");
System.out.println(listModel);
因此,将来即使您在 ZUML 页面中在列表框之前插入任何其他组件,您的代码仍然可以工作。
更新:顺便说一句,有一个有趣的 blogpost最近在 ZK 博客上讨论这个话题
关于include - Zk 如何通过 id 访问包含的 .zul 页面组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6661675/
我创建了一个带有列表框和按钮的网页,问题是当页面加载时,两个组件的右侧都会出现一个空白区域,但是如果调整页面大小,这些空白区域就会消失。
我正在使用 ZK 图表进行项目使用 MVC 方法,我想做的就是更改背景或向特定列添加指南(具有不同颜色),例如索引为 3 的列:我想要实现的目标 这是我的图表: 这是我想要的,在索引为 3 的列中使用
我正在集成 jquery 和 zk 项目。我的目标是将值从 js/jquery 端传递到 java 端,但徒劳无功。这是我引用的代码:use zAu to send data from client
尝试通过 ZK 6.0.1 Component Development Essentials 创建自定义 UI 组件。尝试使用自定义组件时,日志中总是出现错误“http://localhost:808
我正在使用 Zk 框架并尝试从 zhtml 页面获取 url 参数。我试过: Executions.getCurrent().getParameter("param"); 尽管我在客户端尝试了 zsc
您好,我正在尝试比较 zk 和 gwt 的性能。 在我的比较中,如果框架本身将一些代码转换为 js 就可以了(比如 gwt),我不能自己编写任何 javascript,但我不能自己编写 js 在以上述
当 ZK 组件被销毁或分离时,是否有可能通知监听器? 我希望不同的组件组合器通过事件队列进行通信。为此,我将这些组件的监听器订阅到事件队列。现在我需要知道组件或其 Composer 何时被销毁才能取消
我用 struts 1 配置了 zk。我创建了一个列表并在 session 中设置。 List nameList = new ArrayList(); nameList.add( "xxx" ); n
我想基于 zk 组合框制作新的 zk 组件,以保存以前输入的历史记录。我想将这些先前的输入存储在客户端的 localStorage 中。所以我必须使用 JavaScript 在客户端填充组合框,但不知
我在我的应用程序中使用 ZK colorbox,我想将 Colorbox 的 getRGB() 方法的 RGB 值转换为十六进制。 我有什么办法可以做到这一点吗? 最佳答案 您可以使用 org.zko
是否可以将 Spring bean 直接注入(inject)到 ZK backing bean 中? 在教程中,例如 this我只找到了一个示例,其中应用程序上下文是从复杂的 Web 应用程序中手动提
本文整理了Java中org.apache.ignite.spi.discovery.zk.internal.ZookeeperClient.zk()方法的一些代码示例,展示了ZookeeperClie
我安装了 Eclipse Juno 并添加了 ZK Studio 插件。我的Java JDK是1.5。 但是,当我尝试创建新项目时,出现如下错误: The selected wizard could
我收到以下异常 org.zkoss.zk.ui.UiException 和 java.lang.NumberFormatException。有人可以帮忙吗?我的堆栈跟踪如下: Nov 08, 2013
我正在尝试对现有的 ZK Controller 进行单元测试,并且我想找到一种方法来在对我的 Controller 进行单元测试时处理如下调用, Sessions.getCurrent().setAt
我正在运行 Spark 2.0.2 和 Mesos 0.28.2。 我正在尝试向 Spark 提交一个应用程序,使用 ZooKeeper 管理的 Mesos 集群作为主节点: $SPARK_HOME/
当我在MVVM方法的包含页面中使用Hflex属性时,它不起作用。 当我在另一个页面中包含某个页面时,就会发生此问题,并且此页面的组件的大小由hflex属性控制。我已经尝试过在父窗口加载时使用inval
我在带有zk-grails插件的grails 2.3.11中有一个应用程序。当我执行Spring Security Core集成进行身份验证时,zul页面会停止响应,并出现以下错误:“服务器暂时无法使
ZK支持检查元素是否有焦点吗? HtmlBasedComponent 具有 focus() 和 setFocus(boolean) 来设置焦点..但我没有看到任何 getFocus(). 具体来说,我
关于如何干净、稳健地将用户重定向回上一页有什么想法吗? 如果上一页位于应用程序本身内,我只关心将它们重定向回来。我曾考虑过在用户的 session 中存储某种 DIY 历史记录,但这似乎并不干净或健壮
我是一名优秀的程序员,十分优秀!