- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:
在 ZK 中,当使用自定义组件时,生命周期中构建组件内容(任意复杂)的最佳时间是什么时候。也就是说,我们什么时候可以安全地假设我们拥有来自 View 的所有数据,而无需等待太久。
详情:
在 ZK 中,我可以创建一个自定义组件 MyCoolComponent
:
package my.package;
public class MyCoolComponent extends Div {
private String title;
public MyCoolComponent() {
Selectors.wireVariables(this, this, Div.class);
Selectors.wireComponents(this, this, false);
Selectors.wireEventListeners(this, this);
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
// When is the correct time to call this function?
public void initializeComponent() {
appendChild(new Label(title));
// arbitrarily complex initialization follows ..
}
}
我可以像这样在 zul 文件中使用我的自定义组件:
<?component name="coolcomponent" class="my.package.MyCoolComponent" ?>
<zk>
<coolcomponent id="cool" height="200px" title="Sean is Cool" />
</zk>
现在,当使用这个 Component
时,我想添加子 Components
,例如,通过调用 中的
.initializeComponent
函数MyCoolComponent
在 Composers
的世界里,我们被教导在生命周期的 After Compose
阶段处理所有此类工作,并使用 doAfterCompose
功能。这样创建的 Component
也是这样吗?如果是这样,最好的(阅读:高效、安全、可读)方法是什么?我觉得为 onRender
事件附加一个 @Listen
是草率的。有什么想法吗?
最佳答案
据我了解zk docs ,构造函数类似于 doAfterCompose
,
如果你调用Selectors
示例中的方法。
但你喜欢做的可能是
public void setTitle(String title) {
this.title = title;
if(label != null)
appendChild(new Label(title));
else
lebel.setValue(title);
}
zk生命周期是,当进入一个zul组件时<MyComponent>
如果有类似 title="Sean is Cool"
的东西,它会调用构造函数
它调用 set 方法,如果对所有 Components
都这样做它创建页面。
这对您有帮助吗?
对于更复杂的结构,有两种选择
哪种方法最适合您的目的?
现在生命周期是什么?对于选项 2,只需阅读文档即可。
对于选项 1,请在 doAfterCompose
中进行或者在事件监听器/处理程序中。
好的,这是选项 1 的示例。
主要祖尔
<zk>
...
<div id="menu" use="myPkg.MyMenu" item1="omg" />
...
</zk>
我的菜单定义
<vbox>
<label id="item1" value="${arg.item1}">
...
</vbox>
Java
class MyMenu extends Div {
String item1;
...
public void setItem1(String x){
item1 = x;
}
// onCreate is fired before data is send to the client,
// but after the Component and all it children exists.
public void onCreate(CreateEvent ev){
Executions.CreateComponents("MenuDef.zul", this, new HashMap<String, Object>(){{
put("item1", item1);
}});
}
}
您可以调用 Executions.CreateComponents
在doAfterCompose
也来自你的主要 zul,但当然如果你想设置值
在祖尔 onCreate
方法更好。
在 onCreate()
中通过 java 添加组件工作也很好,
但如果您将内容写在 zul 中,它会更易于编辑/维护。
现在用一句话回答你的问题:
最好的时间是初始化你的 Components
在doAfterCompose
并通过列出到 Create Event
.
关于java - 何时在 ZK 生命周期中组合组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14361185/
我创建了一个带有列表框和按钮的网页,问题是当页面加载时,两个组件的右侧都会出现一个空白区域,但是如果调整页面大小,这些空白区域就会消失。
我正在使用 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 历史记录,但这似乎并不干净或健壮
我是一名优秀的程序员,十分优秀!