Register as a TLD

From Documentation
Revision as of 10:49, 15 November 2010 by Ashishd (talk | contribs) (Created page with '{{ZKSpreadsheetEssentialsPageHeader}} __TOC__ ZK Spreadsheet allows developers to write their own custom formula functions. One way of implementing them is as a Java static met…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


ZK Spreadsheet allows developers to write their own custom formula functions. One way of implementing them is as a Java static method and another one to implement it as EL function and register it in a TLD.

Purpose

Implement a custom formula function as an EL function and register it in a TLD.

Define EL function

Define your custom formula function as an EL function. For example here is an EL function to convert USD to TWD.

public class CurrencyFns {

	public static double toTWD(double usdNum, double twdRate) {
		return usdNum * twdRate;
	}
}

Register and config as a TLD

Register above defined toTWD EL function in a TLD as shown below. [1]

<?xml version="1.0" encoding="UTF-8" ?>
<taglib>
	<uri>http://www.zkoss.org/zss/example/custom</uri>
	<description>
		User defined functions.
	</description>
	<import>
		<import-name>CurrencyFns</import-name>
		<import-class>org.zkoss.zss.example.CurrencyFns</import-class>
	</import>

	<function>
		<name>toTWD</name>
		<function-class>org.zkoss.zss.example.CurrencyFns
		</function-class>
		<function-signature>double toTWD(double,double);</function-signature>
		<description>
			Returns equivalent amount in TWD for the given amount in USD.
		</description>
	</function>
</taglib>
  1. More details on defining custom taglib to work with ZK please refer here

Configure this TLD in /metainfo/tld/config.xml which can be find in the classpath. For example, you could put it under WEB-INF/classes/metainfo/tld/config.xml, or as part of a JAR file.

<config>
	<taglib>
		<taglib-uri>http://www.zkoss.org/zss/example/custom</taglib-uri>
		<taglib-location>/web/WEB-INF/tld/custom.tld</taglib-location>
	</taglib>
</config>

taglib directive

To be able to use above defined toTWD EL Function as a custom ZK Spreadsheet formula fuction declare its registed TLD in your ZUL page using taglib directive [1].

<?page title="ZSS" contentType="text/html;charset=UTF-8"?>
<?taglib uri="http://www.zkoss.org/zss/example/custom" prefix="zss" ?>
<zk>
	<window title="ZSS User Defined Functions" border="normal" width="100%" height="100%">
		<spreadsheet width="800px" height="800px"
			src="/test2/xls/elfn.xlsx" maxrows="20" maxcolumns="10">
		</spreadsheet>
	</window>
</zk>

Usage

Once defined and declared above custom formula function can be used just like any other built-in functions of Excel.

=toTWD(A1,B1)