Suggested case list:
Using timer to refresh a grid
383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlinkuser model to move item to another listbox
120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlinkDisabled list item row passed to VM-1981
296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlinkDisabled list item row passed to VM-1981
295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlinkDisabled list item row passed to VM-1981
294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlinkgrid sample with ListModel/RowRenderer
816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlinkgrid sample with ListModel/RowRenderer
809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlinkgrid sample with ListModel/RowRenderer
196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlinkgrid sample with ListModel/RowRenderer
195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlinkgrid sample with ListModel/RowRenderer
194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlinkgrid sample with ListModel/RowRenderer
193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlinkgrid sample with ListModel/RowRenderer
192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlinkgrid sample with ListModel/RowRenderer
191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlinkHierarchy table without using ZK PE/EE
1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlinkgrid sample with ListModel/RowRenderer
128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlinkuser model to move item to another listbox
1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlinkUsing timer to refresh a grid
1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlinkFire a event from child iframe
1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlinkTextbox input restriction sample
1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlinkTest web core taglib in ZUL
1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlinkLatest 10 Fiddles :
constraint binding textbox
3guest172.68.151.16220peldaDec 5, 2025 5:08:19 PMlinkAnother new ZK fiddle
2guest172.68.151.16320peldaDec 5, 2025 5:07:51 PMlinkAnother new ZK fiddle
1guest172.68.151.16220peldaDec 5, 2025 5:07:32 PMlinkAnother new ZK fiddle
1peggypeng172.71.154.99364f4neDec 5, 2025 9:24:31 AMlinktooltip example
2guest104.22.23.13rc1ntoDec 4, 2025 2:23:45 PMlinkAnother new ZK fiddle
1guest172.69.134.2277t7602Dec 4, 2025 1:40:46 PMlinkAnother new ZK fiddle
1peggypeng104.22.17.1802df6e3oDec 4, 2025 8:41:29 AMlinkonClose
1peggypeng172.68.87.248j8kd8aDec 3, 2025 4:10:26 AMlinkAnother new ZK fiddle
1peggypeng172.69.134.2271rm7f4eNov 26, 2025 3:31:24 AMlinkZK-5912-Suggestion
2rebeccalai104.22.20.1442qrmiiuNov 26, 2025 2:07:15 AMlinkForce validation of constraints before processing the form
13guest172.70.82.2071jijgm5Nov 5, 2021 6:37:37 PMlinkresources
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>