Processing...

Suggested case list:

Using timer to refresh a grid

383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlink

user model to move item to another listbox

120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlink

Disabled list item row passed to VM-1981

296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlink

Disabled list item row passed to VM-1981

295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlink

Disabled list item row passed to VM-1981

294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlink

grid sample with ListModel/RowRenderer

816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlink

grid sample with ListModel/RowRenderer

809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlink

grid sample with ListModel/RowRenderer

196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlink

grid sample with ListModel/RowRenderer

195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlink

grid sample with ListModel/RowRenderer

194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlink

grid sample with ListModel/RowRenderer

193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlink

grid sample with ListModel/RowRenderer

192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlink

grid sample with ListModel/RowRenderer

191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlink

Hierarchy table without using ZK PE/EE

1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlink

grid sample with ListModel/RowRenderer

128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlink

user model to move item to another listbox

1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlink

Using timer to refresh a grid

1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlink

Fire a event from child iframe

1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlink

Textbox input restriction sample

1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlink

Test web core taglib in ZUL

1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlink

Latest 10 Fiddles :

constraint binding textbox

3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlink

Another new ZK fiddle

2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlink

Another new ZK fiddle

1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlink

Another new ZK fiddle

1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlink

tooltip example

2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlink

Another new ZK fiddle

1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlink

Another new ZK fiddle

1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlink

onClose

1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlink

Another new ZK fiddle

1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlink

ZK-5912-Suggestion

2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlink

Force validation of constraints before processing the form

13guest172.70.82.2071jijgm5Nov 5, 2021 6:37:37 PMlink

resources

index.zulzul<?component name="formSelectMerchant" macroURI="/components/button_select_merchant.zul" inline=true ?> <?component name="onlineAccountExtraParameters" macroURI="/components/accounts/online_account_extra_parameters.zul" inline=true ?> <?component name="accreditationModel" macroURI="/components/accounts/accreditation_model.zul" inline=true ?> <?variable-resolver class="org.zkoss.spring.DelegatingVariableResolver" ?> <zk xmlns:w="client" xmlns:h="http://www.w3.org/1999/xhtml"> <groupbox width="100%" mold="3d" closable="false"> <caption label="${c:l('account_create_caption')}" /> <grid fixedLayout="true" width="100%"> <columns visible="false" /> <rows id="rowsAccountData"> <!-- //if="${arg.create}" si es creacion --> <row id="merchantIdRow" spans="1,3" nowrap="true" if="${arg.create}"> <label sclass="textoMerchant" value="${c:l('merchant_id')}:" /> <hbox> <formSelectMerchant width="150px" sclass="campo1Merchant" constraint="no empty" /> </hbox> </row> <!-- //unless="${arg.create}" si es actualizacion --> <row id="accountIdRow" unless="${arg.create}" nowrap="true"> <label value="${c:l('merchant_account.bank.pol.number')}:" sclass="textoMerchant" /> <label id="noCuentaPol"/> <label value="${c:l('merchant_account.bank.pol.type')}:" sclass="textoMerchant" /> <label id="tipoCuentaPol"/> </row> <row id="accountDescriptionRow" unless="${arg.create}" nowrap="true" > <cell> <label value="${c:l('merchant_account.bank.pol.desc')}:" sclass="textoMerchant" /> </cell> <hlayout> <textbox id="txtDescCtaPol" name="txtDescCtaPol" sclass="campo1Merchant" constraint="no empty:${c:l('validateNoEmpty')}" maxlength="250"/> <label value="*" sclass="requiredField" /> </hlayout> <cell> <label value="${c:l('merchant_account.bank.pol.name')}:" sclass="textoMerchant" /> </cell> <hlayout> <textbox id="txtNombreCta" name="txtNombreCta" sclass="campo1Merchant" constraint="no empty:${c:l('validateNoEmpty')}" maxlength="120"/> <label value="*" sclass="requiredField" /> </hlayout> </row> <!-- // fin de unless="${arg.create}" si es actualizacion --> <row nowrap="true"> <label value="${c:l('merchant_account.payment_model')}:" sclass="textoMerchant" /> <hlayout> <label unless="${arg.create}" value="@{merchantAccount.paymentsModel}" sclass="textoMerchant" /> <combobox if="${arg.create}" name="paymentsModelType" height="22px;" width="152px;" id="comboPaymentsModel" readonly="true" onBlur='if (self.getSelectedItem() != null) { Events.postEvent(new Event("onChangePaymentsModel", self.getFellow("windowManagementAccount",true), self.getSelectedItem().getValue())); }' onChanging='if (self.getSelectedItem() != null) { Events.postEvent(new Event("onChangePaymentsModel", self.getFellow("windowManagementAccount",true), self.getSelectedItem().getValue())); }' onChange='if (self.getSelectedItem() != null) { Events.postEvent(new Event("onChangePaymentsModel", self.getFellow("windowManagementAccount",true), self.getSelectedItem().getValue())); }' onSelect='if (self.getSelectedItem() != null) { Events.postEvent(new Event("onChangePaymentsModel", self.getFellow("windowManagementAccount",true), self.getSelectedItem().getValue())); }' sclass="campo2Merchant" constraint="no empty" model="@{paymentsModelType}" selectedItem="@{merchantAccount.paymentsModel, save-when='Send.onClick, merchantAccountData.onOK, self.onBlur, self.onSelect, self.onChanging, self.onChange'}"> <comboitem self="@{each=paymentModel}" label="@{paymentModel, converter=com.pagosonline.ppp4.web.converters.TranslationConverter}" value="@{paymentModel}" /> </combobox> <label if="${arg.create}" value="*" sclass="requiredField" /> </hlayout> <label value="${c:l('pricing.merchantProfile') }:" sclass="textoMerchant" /> <hlayout> <label unless="${arg.create}" value="@{merchantAccount.merchantProfile.name}" sclass="textoMerchant" style="width: 100%;word-break: break-word;" /> <combobox id="merchantProfileCombo" if="${arg.create}" name="merchantProfile" visible="true" sclass="campo2Merchant" constraint="no empty" readonly="true" height="22px;" width="152px;" > </combobox> <label if="${arg.create}" value="*" sclass="requiredField" /> </hlayout> </row> <row nowrap="true"> <label value="${c:l('merchant_country')}:" sclass="textoMerchant" /> <hlayout> <label id="countryLabel" unless="${arg.create}" sclass="textoMerchant" /> <combobox id="countryCombo" if="${arg.create}" name="country" visible="false" sclass="campo2Merchant" constraint="no empty" onBlur="if(self.getSelectedItem() == null) self.setValue(null);" readonly="true" onSelect='if (self.getSelectedItem() != null) { if (self.getSelectedItem().getValue().equals(com.pagosonline.ppp4.core.common.model.Country.MX)) { checkMonthsWithoutInterest.setDisabled(false); } else { checkMonthsWithoutInterest.setDisabled(true); } }' width="152px;"> </combobox> <label if="${arg.create}" value="*" sclass="requiredField" /> </hlayout> <label value="${c:l('merchantContactName')}:" sclass="textoMerchant" /> <hlayout> <textbox id="billingNombreContacto" name="billingNombreContacto" sclass="campo1Merchant" maxlength="120" constraint="no empty:${c:l('validateNoEmpty')}"/> <label value="*" sclass="requiredField" /> </hlayout> </row> <row nowrap="true"> <label value="${c:l('merchant_currency')}:" sclass="textoMerchant"/> <hlayout> <label id="currencyIsoLabel" unless="${arg.create}" sclass="textoMerchant" height="22px;" width="152px;"/> <combobox id="comboCurrencyIso" name="comboCurrencyIsoType" height="22px;" width="152px;" sclass="campo2Merchant" readonly="true" if="${arg.create}"> </combobox> <label if="${arg.create}" value="*" sclass="requiredField" /> </hlayout> </row> <onlineAccountExtraParameters/> <row nowrap="true"> <label value="${c:l('merchant_type.id')}:" sclass="textoMerchant" /> <hlayout> <combobox id="comboBillingTipoDocs" name="billingTipoDocs" height="22px;" width="152px;" sclass="campo2Merchant" constraint="no empty" onBlur="if(self.getSelectedItem() == null) self.setRawValue(null);"> </combobox> <label value="*" sclass="requiredField" /> </hlayout> <label value="${c:l('merchantDocument')}:" sclass="textoMerchant" /> <hlayout> <textbox id="billingNoDocumento" name="billingNoDocumento" sclass="campo1Merchant" constraint="no empty:${c:l('validateNoSpecialCharNoEmpty')}" maxlength="30"/> <label value="*" sclass="requiredField" /> </hlayout> </row> <row nowrap="true" id="rowCUILCUIT"> <label value="${c:l('online.account.personal.cuil')} / ${c:l('onlineaccount.create.company.cuit')}" sclass="textoMerchant" /> <hlayout> <combobox id="comboCuilCuitType" name="comboCuilCuitType" height="22px;" width="152px;" sclass="campo2Merchant" readonly="false" onBlur="if(self.getSelectedItem() == null) self.setRawValue(null);"> </combobox> <label if="${arg.create}" value="*" sclass="requiredField" /> </hlayout> <label value="${c:l('lb.number')} ${c:l('online.account.personal.cuil')} / ${c:l('onlineaccount.create.company.cuit')}" sclass="textoMerchant" /> <hlayout> <textbox id="txtCuilCuit" sclass="campo1Merchant" name="txtCuilCuit"/> <label if="${arg.create}" value="*" sclass="requiredField" /> <textbox id="txtCuil" visible="false"/> <textbox id="txtCuit" visible="false"/> </hlayout> </row> <row nowrap="true"> <label value="${c:l('merchant_telephone')}:" sclass="textoMerchant" /> <hlayout> <textbox id="billingTxtPhone" name="billingTxtPhone" sclass="campo1Merchant" constraint="no empty:${c:l('validateNoEmpty')}" maxlength="64"/> <label value="*" sclass="requiredField" /> </hlayout> <label value="${c:l('merchantAddress')}:" sclass="textoMerchant" /> <hlayout> <textbox id="billingTxtAddress" name="billingTxtAddress" sclass="campo1Merchant" maxlength="120" constraint="no empty:${c:l('validateNoEmpty')}, /^[A-Za-z0-9]*$/:No special chars allowed"/> <textbox id="billingEmail" name="billingEmail" sclass="campo1Merchant" maxlength="60" constraint="no empty, ${c:l('emailRegex')}:${c:l('validateMailNoEmpty')}"/> <label value="*" sclass="requiredField" /> </hlayout> </row> <!-- Argentina province and city --> <row nowrap="true" id="rowAccountGeoInfo" visible="false"> <label value="${c:l('Merchant.province')}:" sclass="textoMerchant" /> <hlayout> <combobox id="cmbAccountProvince" name="cmbAccountProvince" readonly="true" width="152px;" sclass="campo2Merchant"/> <label value="*" sclass="requiredField" /> </hlayout> <label value="${c:l('Merchant.city')}:" sclass="textoMerchant" /> <hlayout> <combobox id="cmbAccountCity" name="cmbAccountCity" readonly="true" width="152px;" sclass="campo2Merchant"/> <label value="*" sclass="requiredField" /> </hlayout> </row> <!-- Colombia department and city --> <row nowrap="true" id="rowAccountGeoInfoCo" visible="false"> <label value="${c:l('department')}:" sclass="textoMerchant" /> <hlayout> <combobox id="cmbAccountProvinceCo" name="cmbAccountProvinceCo" readonly="true" width="152px;" sclass="campo2Merchant"/> <label value="*" sclass="requiredField" /> </hlayout> <label value="${c:l('city')}:" sclass="textoMerchant" /> <hlayout> <combobox id="cmbAccountCityCo" name="cmbAccountCityCo" readonly="true" width="152px;" sclass="campo2Merchant"/> <label value="*" sclass="requiredField" /> </hlayout> </row> <row nowrap="true" id="rowAccountCity"> <label value="${c:l('merchant_city')}:" sclass="textoMerchant" /> <hlayout> <textbox id="billingCiudad" name="billingCiudad" sclass="campo1Merchant" maxlength="60" constraint="no empty:${c:l('validateNoEmpty')}"/> <label value="*" sclass="requiredField" /> </hlayout> </row> <row nowrap="true"> <label value="${c:l('merchant_email')}:" sclass="textoMerchant" /> <hlayout> <textbox id="billingEmail" name="billingEmail" sclass="campo1Merchant" maxlength="60" constraint="no empty, ${c:l('emailRegex')}:${c:l('validateMailNoEmpty')}"/> <label value="*" sclass="requiredField" /> </hlayout> </row> <row nowrap="true"> <label value="${c:l('merchant_account_comments')}:" sclass="textoMerchant" /> <hlayout> <textbox id="billingTxtComments" name="billingTxtComments" sclass="campo1Merchant" maxlength="2000" rows="2"/> </hlayout> <label value="${c:l('merchant_fax')}:" sclass="textoMerchant" /> <textbox id="billingNoFax" name="billingNoFax" sclass="campo1Merchant" maxlength="30"/> </row> <row nowrap="true"> <!-- si es edición --> <label unless="${arg.create}" value="${c:l('state')}:" sclass="textoMerchant" /> <hlayout unless="${arg.create}"> <combobox id="cmbAccountStatus" name="cmbAccountStatus" height="22px;" width="152px;" sclass="campo2Merchant" constraint="no empty" readonly="true" onBlur="if(self.getSelectedItem() == null) self.setRawValue(null);"/> <label value="*" sclass="requiredField" /> </hlayout> </row> <row> <!-- Argentina accounts, Supports cash payments RapiPago and PagoFacil offline.--> <label value="${c:l('merchant_account_offline_support_payments')}:" sclass="textoMerchant" id="labelSupportOfflinePayments_PagoFacil_RapiPago" visible="false" width="200px"/> <checkbox id="checkSupportOfflinePayments_PagoFacil_RapiPago" visible="false" disabled="false" name="checkSupportOfflinePayments_PagoFacil_RapiPago" sclass="campo2Merchant"/> <label value="${c:l('billing.local_operation')}:" sclass="textoMerchant" /> <checkbox id="checkLocalOperation" name="checkLocalOperation" sclass="campo2Merchant"/> </row> <row nowrap="true"> <label value="${c:l('mastercard_submerchat_code_pe')}:" sclass="textoMerchant" id="labelMastercardSubMerchantCodePE" visible="false" /> <hlayout id="hlayoutMastercardSubMerchantCodePE" visible="false"> <textbox id="txtMastercardSubMerchantCodePE" name="txtMastercardSubMerchantCodePE" sclass="campo1Merchant" constraint="no empty, /[0-9]{7}/:${c:l('validateMastercardSubMerchantCodePENoEmpty')}" maxlength="7"> <attribute w:name="doKeyPress_"> <![CDATA[ function(evt){ if(!this._shallIgnore(evt,"0123456789")) this.$doKeyPress_(evt); } ]]> </attribute> </textbox> <zscript> String scriptNoCopyMastercardSubMerchantCodePE = " $(\'[name=\"txtMastercardSubMerchantCodePE\"]\').bind(\"cut copy paste contextmenu\", function(e){e.preventDefault();});"; Clients.evalJavaScript(scriptNoCopyMastercardSubMerchantCodePE); </zscript> <label value="*" sclass="requiredField" /> </hlayout> </row> <row nowrap="true"> <label value="${c:l('merchant_submerchant_code_ar')}:" sclass="textoMerchant" id="labelSubMerchantCodeAR" visible="false" /> <hlayout id="hlayoutSubMerchantCodeAR" visible="false"> <textbox id="txtSubMerchantCodeAR" name="txtSubMerchantCodeAR" sclass="campo1Merchant" constraint="/[0-9]{1,20}/:${c:l('validateSubMerchantCodeAR')}" maxlength="20"> </textbox> <zscript> String scriptNoCopySubMerchantCodeAR = " $(\'[name=\"txtSubMerchantCodeAR\"]\').bind(\"cut copy paste contextmenu\", function(e){e.preventDefault();});"; Clients.evalJavaScript(scriptNoCopySubMerchantCodeAR); </zscript> </hlayout> </row> <!-- the international commerce code row for CL accounts--> <row nowrap="true"> <label value="${c:l('international_commerce_code')}:" sclass="textoMerchant" id="labelInternationalCommerceCodeCL" visible="false" /> <hlayout id="hLayoutInternationalCommerceCodeCL" visible="false"> <textbox id="txtInternationalCommerceCodeCL" name="txtInternationalCommerceCodeCL" sclass="campo1Merchant" maxlength="20"> </textbox> <zscript> String scriptNoCopyInternationalCommerceCodeCL = " $(\'[name=\"txtInternationalCommerceCodeCL\"]\').bind(\"cut copy paste contextmenu\", function(e){e.preventDefault();});"; Clients.evalJavaScript(scriptNoCopyInternationalCommerceCodeCL); </zscript> </hlayout> </row> <row> <!-- allow payments with international credit cards --> <label id="checkAccountallowInternationalCreditCardsLabel" width="200px" sclass="textoMerchant" value="${c:l('merchant_account_allow_international_credit_cards')}:" /> <hlayout> <checkbox id="checkAccountallowInternationalCreditCards" name="checkAccountallowInternationalCreditCards" sclass="campo2Merchant"/> </hlayout> <!-- allows processing without cvv2 --> <label value="${c:l('merchant_account_process_without_cvv2')}:" sclass="textoMerchant" width="205px"/> <hlayout> <checkbox id="allowProcessingWithoutCvv2Checkbox" name="allowProcessingWithoutCvv2Checkbox" sclass="campo2Merchant"/> </hlayout> </row> <row> <label value="${c:l('merchant_account_test_mode')}:" sclass="textoMerchant" width="200px" /> <hlayout> <checkbox id="checkAccountTestMode" name="checkAccountTestMode" sclass="campo2Merchant" /> </hlayout> <label id="lblProcessAs" value="${c:l('merchant_account.process_as')}:" sclass="textoMerchant" width="200px" visible="false" /> <hlayout id="hlayoutProcessAss" visible="false"> <radiogroup id="radioGroupPaymentRequestType"> <radio value="AIRLINE" label="${c:l('merchant_account.airline')}" /> <radio value="FUNDS_DISPERSION" label="${c:l('merchant_account.funds_dispersion')}" /> <radio value="DEFAULT" label="${c:l('merchant_account.default')}" checked="true" /> </radiogroup> </hlayout> </row> <row> <label id="lblSalesforceId" value="${c:l('merchant_account_salesforce_id')}:" sclass="textoMerchant" width="200px;" /> <hlayout> <textbox id="txtSalesforceId" name="txtSalesforceId" sclass="campo1Merchant" maxlength="18" constraint="/^.{15,18}/:${c:l('validateSalesForceId')}" value="@{merchantAccount.salesforceId, save-when='Send.onClick'}" /> </hlayout> </row> <!-- enable smart anticipation (BR only) --> <row id="rowEnableSmartAnticipation" visible="false"> <label value="${c:l('enable_smart_anticipation')}:" sclass="textoMerchant" width="200px" /> <checkbox id="checkEnableSmartAnticipation" visible="true" disabled="false" name="checkEnableSmartAnticipation" sclass="campo2Merchant" /> </row> <row id="internationalAccountRow" visible="false"> <label value="${c:l('is_international_ch')}:" sclass="textoMerchant" width="200px" /> <checkbox id="checkInternationalAccount" visible="true" disabled="false" name="checkInternationalAccount" sclass="campo2Merchant"/> </row> <row> <!--Colombia accounts, Supports refunds through transfers --> <label value="${c:l('merchant_account_support_refunds_through_transfers')}:" sclass="textoMerchant" id="labelSupportRefundsThroughTransfers" visible="true" width="200px" /> <checkbox id="checkSupportRefundsThroughTransfers" visible="true" disabled="false" name="checkSupportRefundsThroughTransfers" sclass="campo2Merchant" /> </row> <!-- RETENTIONS CHILE --> <row id="retentionPercentageRow" visible="false"> <div sclass="textoMerchant" width="200px" tooltiptext=""> ${c:l('retentions_percentage_ch')}: </div> <div tooltiptext=""> <doublebox id="accountTextRetention" name="accountTextRetention"/> <label value="% * " sclass="label_bold" /> </div> </row> <accreditationModel/> <!-- turnover tax rate (AR only) --> <row nowrap="true" id="turnoverTaxRateRow" visible="false"> <label value="${c:l('merchant_account.turnover_tax_rate')}:" sclass="textoMerchant" /> <hlayout> <decimalbox id="decimalboxTurnoverTaxRate" name="turnoverTaxRate" scale="2" format="##0.0#'%'" sclass="campo1Merchant" maxlength="10" readonly="true"/> <label id="labelTurnoverTaxRateCode"/> </hlayout> </row> <!-- gross income tax (AR only) --> <row nowrap="true" id="grossIncomeTaxRow" visible="false"> <label value="${c:l('merchant_account.gross_income_tax')}:" sclass="textoMerchant" /> <hlayout> <decimalbox id="decimalboxGrossIncomeTax" name="impuestoIngresosBrutos" scale="2" format="##0.0#'%'" sclass="campo1Merchant" maxlength="10" constraint="no negative,no empty" /> <label value="*" sclass="requiredField" /> </hlayout> </row> </rows> </grid> </groupbox> </zk>TestComposer.javajavaimport org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; import org.zkoss.zul.impl.*; import java.util.*; public class TestComposer extends GenericForwardComposer{ private Component form; private Label label; public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); } public void onClick$btn(Event e){ check(form); // This line is only executed is form is valid label.setValue("Validation OK!"); } private void check(Component component) { checkIsValid(component); List<Component> children = component.getChildren(); for (Component each: children) { check(each); } } private void checkIsValid(Component component) { if (component instanceof InputElement) { if (!((InputElement) component).isValid()) { // Force show errorMessage ((InputElement) component).getText(); } } } } test.javajavaimport org.zkoss.zk.ui.*; import org.zkoss.zk.ui.event.*; import org.zkoss.zk.ui.util.*; import org.zkoss.zk.ui.ext.*; import org.zkoss.zk.au.*; import org.zkoss.zk.au.out.*; import org.zkoss.zul.*; import org.zkforge.ckez.CKeditor; import org.zkoss.util.resource.Labels; import org.zkoss.zk.ui.WrongValueException; public class test extends GenericForwardComposer{ private Textbox textbox; private Label label; private CKeditor ckeditor; public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); } public void onClick$btn(Event e) throws InterruptedException{ if (textbox.getValue().length() <= 0 || textbox.getValue().equals(null) || textbox.getValue().equals("")) { label.setValue("Validation Err!"); }else{ label.setValue("Validation OK!"); } if(ckeditor.getValue() == "" || ckeditor.getValue() == null){ throw new WrongValueException(ckeditor, Labels.getLabel("Empty value")); } } } test.zulzul<zk> <window border="normal" title="hello" apply="pkg$.TestComposer"> <div>Welcome to ZK Fiddle , run it right now!</div> <button id="btn" label="Click Me To Evalute Event Binding With Composer" /> </window> </zk>