`

【zk开发】如何在页面中获得composer对象

    博客分类:
  • ZK
阅读更多

 

样例:

 

 

<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

    Laravel开发-composer-plugin codex composer插件更新清单。

    Laravel开发-composer

    Laravel开发-composer Rinvex Composer是一个直观的软件包,它利用Composer插件API支持安装过程中的其他操作,例如在默认供应商库外安装软件包,以及在安装、更新和卸载过程中运行自定义脚本。

    composer 组件化开发使用手册

    这是一个composer开发手册,里面有详尽的安装及使用教程,需要时可以下载。

    Visual Composer 5.4.2 WordPress的页面生成器

    Visual Composer 5.4.2 WordPress页面生成器插件与前端和后端编辑器

    composer中国离线包

    是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。假定你在创建一个...

    idea-composer-plugin, 在 composer.json 文件中,添加代码完成的PhpStorm 插件.zip

    idea-composer-plugin, 在 composer.json 文件中,添加代码完成的PhpStorm 插件 支持 PHP composer.json 将代码完成,检查和更多内容添加到 composer.json 文件中。这里插件提供:完成完成:composer.json 架构现在...

    Code Composer Studio 教程

    dsp 开发平台Code Composer Studio 教程

    Unity3d WorldComposer TerrainComposer

    在网页找了很多的WorldComposer TerrainComposer,但是很多都是不能用,安装有问题,这两个是经过筛选可以使用了,在版本4.5上是没有问题的

    composergithooks在你的composer配置中轻松管理githooks

    composer-git-hooks:在你的composer配置中轻松管理git hooks

    Laravel开发-laravel-composer

    Laravel开发-laravel-composer 在Laravel项目中改进运行作曲家

    Composer中文文档.pdf

    Composer中文文档,转载自看云,因此免资源分下载

    Drive Composer pro 2.7.1

    Drive composer是支持ABB通用架构变频器的一款启动和维护工具ABB通用架构变频器的一款启动和维护工具。该工具用于查看和设置变频器参数,并对设备性能进行监测和调试。Drive composer pro包括入门版本具备的所有功能...

    Laravel开发-lisk-composer

    Laravel开发-lisk-composer Lisk Composer是一个用于Laravel和PHP Composer项目的Lisk API包。

    WorldComposer 1.61.zip

    地形生成插件贼好用unity2018,2019 都可以 WorldComposer 1.61地形生成插件贼好用unity2018,2019 都可以 WorldComposer 1.61地形生成插件贼好用unity2018,2019 都可以 WorldComposer 1.61地形生成插件贼好用unity...

    composer-monorepo-plugin, 将Composer集成到多个软件包中.zip

    composer-monorepo-plugin, 将Composer集成到多个软件包中 Composer Monorepo插件Note: this project is still experimental. Please provide feedback!这里插件在使用 Composer 软件包管理器

    wordpress插件 js_composer中文

    WordPress的页面拖放编辑器。可以完全控制你的WordPress网站,建立任何布局,只要你敢想 - 而无需编程知识。这个有汉化包,0分下载。

    composer.phar

    你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。 下载到本地,放在项目根目录,在cmd 命令中输入 php composer.phar 参数 来完成包的安装 比如查看版本...

Global site tag (gtag.js) - Google Analytics