样例:
<window id="userWin" apply="org.sunflower.web.controller.zk.UserController">
上传头像:<button label="上传头像..." upload="true,maxsize=-1,native"
onUpload="userWin$composer.handleUploadLogo(event.media)"/>
</window>
UserController代码,继承GenericComposer或者其子类
import org.zkoss.util.media.Media;
import org.zkoss.zk.ui.util.GenericComposer;
public class UserController extends GenericComposer {
private static final long serialVersionUID = -3801962286418473844L;
public void handleUploadLogo(Media media) {
System.out.println(media.getName());
}
}
疑问:
userWin$composer变量从何而来?
GenericComposer部分源码
abstract public class GenericComposer extends GenericEventListener
implements Composer, ComposerExt, java.io.Serializable {
.....................................
//此处的comp为使用apply=“xxx.xxx.XXXcomposer”属性的组建
//since 3.6.1
public void doBeforeComposeChildren(Component comp) throws Exception {
//assign this composer as a variable
//feature #2778508
Components.wireController(comp, this); //下一步看wireController方法源码
}
................................
}
为了方便,以下不一一说明为某某类的源码,仅贴出相关源码
1,
public static final
void wireController(Component comp, Object controller, char separator) {
new Wire(controller, separator).wireController(comp, comp.getId());//下一步看此方法
}
2, 然后看如下代码,一切都明了了,
/**
* Inject controller as variable of the specified component.
*/
private void wireController(Component comp, String id) {
//feature #2778513, support {id}$composer name
final String composerid = id + _separator + "composer";
if (!comp.hasAttributeOrFellow(composerid, false)) {
comp.setAttribute(composerid, _controller);
}
comp.setAttribute(varname(id, _controller.getClass()), _controller);
}
解释代码
首先拼接composerid字符串,composerid由comp.getId、_seperator、"composer"组成
其中_seperator的值默认为$,当然可以使用类似Components.wireController(comp, controller, separator);
提供第三个参数的方法修改默认$
分享到:
相关推荐
对于开发工具和集成环境,文档也会有所提及,如如何在Eclipse或IntelliJ IDEA中配置ZK项目,以及使用ZK Studio或ZK Developer插件提升开发效率。 最后,文档可能会包含一些高级话题,如ZK的扩展机制,如Composer和...
同时,会演示如何在页面布局中使用各种内置组件,并展示如何自定义新组件。 3. **数据绑定**:ZK的双向数据绑定功能使得UI和数据模型之间的同步变得简单,手册会阐述如何利用MVVM(Model-View-ViewModel)模式进行...
在本文中,我们将深入探讨Laravel开发中的Composer插件,以及如何有效地利用它们来增强项目的功能和效率。Composer是PHP的一个依赖管理工具,它允许开发者声明项目所依赖的库,并自动处理这些库的安装和更新。在...
在使用zk框架开发的过程中,尝试加载`/group/salegroup/index.zul`页面时遇到了`SAXParseException:Contentisnotallowedintrailingsection`的错误。 **解决方案**: 1. **分析原因**: - 错误提示表明XML文档结构...
在PHP开发环境中,Composer起到了构建、部署和维护应用程序依赖关系的核心作用。本篇将详细介绍Composer-Setup.exe,它是Composer的Windows安装程序,以及如何在已安装PHP的基础上配置和使用Composer。 首先,让...
1. **可视化编辑器**: JS Composer 提供了一个实时的前端编辑器,用户可以直接在预览模式下调整页面元素的位置和样式,看到即时的效果,提升了设计效率。 2. **丰富的元素库**: 插件内含多种预先设计好的页面元素,...
5. **Composer**:Composer是ZK中的一个关键概念,它是负责组件行为和状态管理的类。通过实现Composer,开发者可以控制组件的生命周期,监听和响应用户交互,实现复杂的业务逻辑。 6. **Scriplet**:Scriplet是ZK中...
Laravel开发-composer Rinvex Composer是一个直观的软件包,它利用Composer插件API支持安装过程中的其他操作,例如在默认供应商库外安装软件包,以及在安装、更新和卸载过程中运行自定义脚本。
本文将深入探讨Unity3D中的两个知名地形插件——WorldComposer和TerrainComposer,以及它们在实现真实世界地形构建中的作用。 **WorldComposer** WorldComposer是一款高级的Unity3D地形编辑工具,它提供了一套完整...
标题 "composergithooks在你的composer配置中轻松管理githooks" 提及的是一个名为 "composer-git-hooks" 的工具,它允许开发者更方便地在他们的Composer项目中集成和管理Git钩子。Git钩子是预定义的脚本,可以在执行...
标题中的"Composer windows安装版"指的是专门为Windows操作系统设计的Composer安装程序。...通过阅读"PHP_Composer.txt",用户可以更好地理解和掌握如何在实际开发中使用Composer,提高开发效率和项目的稳定性。
在ZK中,我们可以使用`LoginForm`组件来创建登录界面,监听用户的输入事件。当用户点击登录按钮时,ZK会自动发送请求到服务器,JSP接收并验证用户信息,如果验证成功则返回登录成功页面,否则显示错误信息。 4. **...
- **手动安装**:手动下载 `composer.phar` 文件并将其放置在 PATH 环境变量中。 #### 六、总结 Composer 作为 PHP 生态系统中的核心工具之一,极大地简化了依赖管理和项目构建的过程。无论是对于新手还是经验...
本文将深入探讨Composer的安装过程,以及在安装过程中可能遇到的OpenSSL证书问题。 首先,让我们了解Composer的基本概念。Composer是一个用于自动解决PHP项目依赖关系的工具,它通过读取项目的`composer.json`文件...
在Laravel框架的开发过程中,`composer`是一个至关重要的工具,它是PHP的依赖管理器,负责管理和更新项目中的各种库和组件。`laravel-composer`通常指的是与Laravel项目相关的Composer配置和脚本,旨在优化和提升...
Composer 是一个在 PHP 开发中广泛使用的工具,它允许开发者管理和更新项目中的各种依赖库,确保不同组件之间的兼容性和一致性。它的工作原理是通过读取项目的 `composer.json` 文件来了解项目所需的库和其特定版本...
标题中的"Composer2.1.9-Setup.exe.7z"指的是Composer的2.1.9版本的安装程序,它被压缩成一个7z格式的文件。...通过安装这个压缩包中的执行文件,用户可以方便地在自己的开发环境中启用Composer的功能。