样例:
<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);
提供第三个参数的方法修改默认$
分享到:
相关推荐
Laravel开发-composer-plugin codex composer插件更新清单。
Laravel开发-composer Rinvex Composer是一个直观的软件包,它利用Composer插件API支持安装过程中的其他操作,例如在默认供应商库外安装软件包,以及在安装、更新和卸载过程中运行自定义脚本。
这是一个composer开发手册,里面有详尽的安装及使用教程,需要时可以下载。
Visual Composer 5.4.2 WordPress页面生成器插件与前端和后端编辑器
是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。假定你在创建一个...
idea-composer-plugin, 在 composer.json 文件中,添加代码完成的PhpStorm 插件 支持 PHP composer.json 将代码完成,检查和更多内容添加到 composer.json 文件中。这里插件提供:完成完成:composer.json 架构现在...
dsp 开发平台Code Composer Studio 教程
在网页找了很多的WorldComposer TerrainComposer,但是很多都是不能用,安装有问题,这两个是经过筛选可以使用了,在版本4.5上是没有问题的
composer-git-hooks:在你的composer配置中轻松管理git hooks
Laravel开发-laravel-composer 在Laravel项目中改进运行作曲家
Composer中文文档,转载自看云,因此免资源分下载
Drive composer是支持ABB通用架构变频器的一款启动和维护工具ABB通用架构变频器的一款启动和维护工具。该工具用于查看和设置变频器参数,并对设备性能进行监测和调试。Drive composer pro包括入门版本具备的所有功能...
Laravel开发-lisk-composer Lisk Composer是一个用于Laravel和PHP Composer项目的Lisk API包。
地形生成插件贼好用unity2018,2019 都可以 WorldComposer 1.61地形生成插件贼好用unity2018,2019 都可以 WorldComposer 1.61地形生成插件贼好用unity2018,2019 都可以 WorldComposer 1.61地形生成插件贼好用unity...
composer-monorepo-plugin, 将Composer集成到多个软件包中 Composer Monorepo插件Note: this project is still experimental. Please provide feedback!这里插件在使用 Composer 软件包管理器
WordPress的页面拖放编辑器。可以完全控制你的WordPress网站,建立任何布局,只要你敢想 - 而无需编程知识。这个有汉化包,0分下载。
你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。 下载到本地,放在项目根目录,在cmd 命令中输入 php composer.phar 参数 来完成包的安装 比如查看版本...