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 AMlinke-mail validation
16guest203.193.148.993h0tsaeMay 15, 2018 6:49:20 AMlinkresources
index.zulzul<zk>
<<borderlayout height="100%">
<north title="${c:l('EnergyData')}" id="Paramid" splittable="true" collapsible="true">
<grid id="grid" >
<rows>
<row>
<cell align="center" colspan="4">
<hlayout>
<textbox name="command" id="command" value="FEP_COMMUNICATIONERRORS" visible="false" />
<label value="${c:l('FromDate')}" id="daily_from_label" visible="true" style="padding-left:0px"/>
<datebox id="daily_from_txt" name="daily_from_txt" width="100px" format="dd-MMM-yyyy" constraint="after 18000101 ,no empty, no future" visible="true" onCreate="self.value = new Date()" readonly="true"/>
<label value="${c:l('ToDate')}" id="daily_to_label" visible="true" style="padding-left:0px"/>
<datebox id="daily_to_txt" name="daily_to_txt" width="100px" format="dd-MMM-yyyy" constraint="after 18000101 ,no empty, no future" visible="true" onCreate="self.value = new Date()" readonly="true"/>
</hlayout>
</cell>
</row>
<row>
<cell align="right" colspan="2">
<hlayout>
<groupbox>
<caption label="${c:l('DType')}" />
<radiogroup id="dtype" name="dtype">
<radio name='dtype' label="${c:l('FepEnergyData.FromOrigin')}" value='origin' selected="true"/>
<radio name='dtype' label="${c:l('FepEnergyData.FromReset')}" value='reset' visible="${visible}"/>
<!-- <radio name='dtype' label="${c:l('FepEnergyData.FromPhase')}" value='phase' visible="${visible}"/> -->
</radiogroup>
</groupbox>
</hlayout>
</cell>
<cell align="left" colspan="2">
<hlayout>
<groupbox closable="false" >
<caption label="${c:l('ReportFormatLabel')}" />
<radiogroup id="format" name="format">
<radio name='outputType' value='HTML' /> <label value="${c:l('HTML')}" />
<radio name='outputType' value='PDF' selected="true"/> <label value="${c:l('PDF')}" />
<radio name='outputType' value='XLS' /><label value="${c:l('XLS')}" />
<radio name='outputType' value='RTF' /><label value="${c:l('RTF')}" />
<radio name='outputType' value='CSV' /> <label value="${c:l('CSV')}" />
</radiogroup>
</groupbox>
</hlayout>
</cell>
</row>
<row>
<cell align="center" colspan="4">
<hlayout>
<button type="button" id="submit" label="${c:l('Submit')}" mold="trendy" onClick="submitFrm()"/>
</hlayout>
</cell>
</row>
</rows>
</grid>
</north>
<center>
<div height="100%" id="iframediv">
<x:div id="loading" align="center" style="display:none;padding-top:5%;">
<x:div class='loading-indicator'><image src='/../styles/fep/images/loading_icon.gif' width='150px' height='100px'/>
<x:span id='loading-msg'>
<x:br/> <label value="${c:l('GenReportMessage')}" style="font-weight:bold;color:#e53f27;font-size:20px"/>
<x:br/><label value="${c:l('PlzWaitMessage')}" style="font-weight:bold;color:#e53f27;font-size:20px"/></x:span>
</x:div>
</x:div>
<x:div id="dwnldDiv" align="center" style="display:none;padding-top:12%;">
<x:div class='loading-indicator'>
<image src='/../styles/fep/images/loading-icon.gif' width='100px' height='100px'/> <x:br/>
<label value="${c:l('ReportGenMessage')}" style="font-weight:bold;color:#e53f27;font-size:20px"/>
</x:div>
</x:div>
<x:iframe id="DataIframe" name="DataIframe" src="" width="100%" height="100%" xmlns:ca="client/attribute"
onload="loading.style.display='none';document.getElementById('DataIframe').style.display='block';" border="0" frameborder="0"></x:iframe>
</div>
</center>
</borderlayout>
</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 java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRRtfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.export.oasis.JROdsExporter;
import net.sf.jasperreports.engine.export.oasis.JROdtExporter;
import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter;
import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
import net.sf.jasperreports.engine.fill.AsynchronousFillHandle;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.j2ee.servlets.ImageServlet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.zkoss.spring.SpringUtil;
import org.zkoss.zk.ui.Sessions;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Div;
import org.zkoss.zul.Filedownload;
public class TestComposer extends GenericForwardComposer{
@Controller
@RequestMapping("/JRReportDownload.htm")
public class JRReportDownload {
/**
* Wiring up the database dataSource just used to get the connection to database
* */
@Autowired
private DataSource dataSource;
/**
* Holds reportType(Formats) like pdf or html or csv ...etc
* */
public String ReportType=null;
/**
* Holds Database connection
* */
public Connection conn;
/**
* Holds report file Path
* */
public String reportFile;
/**
* Holds report Logo image path
* */
public String imagePath;
public String user_id;
Div loading,dwnldDiv;
/**
* Invokes when onLoad of the this page just used to display the report
* */
@SuppressWarnings({ "unchecked", "deprecation", "rawtypes" })
@RequestMapping( method=RequestMethod.GET)
public void getReport(Model model,HttpSession session,HttpServletRequest request,HttpServletResponse response) throws ParseException
{
ReportType = request.getParameter("Format");
imagePath=request.getRealPath("/").substring(0, request.getRealPath("/").length()-9)+"styles_war/fep/images/report_header.png";
/*public void getReport(Model model,HttpSession session,HttpServletRequest request,HttpServletResponse response) throws ParseException
{ */
SimpleDateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
String frmdate = dateFormat.format(cal.getTime());
// String webpath = Sessions.getCurrent().getWebApp().getRealPath("/temp/"+frmdate+"");
String webpath = request.getRealPath("/temp/"+frmdate+"");
File directory = new File(webpath);
if(directory.exists())
try {
org.apache.commons.io.FileUtils.deleteDirectory(directory);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
HashMap parameters=new HashMap();
String ReportType=null;
Connection conn;
String reportFile;
//String imagePath;
String user_id;
ReportType = request.getParameter("Format");
if(request.getParameter("Type").equals("All")){
parameters.put("fromdate",request.getParameter("FromDate"));
parameters.put("todate",request.getParameter("ToDate"));
parameters.put("userId",request.getParameter("UserId"));
//imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("imagepath",imagePath);
}
if(request.getParameter("Type").equals("AllData")){
//imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("SUBREPORT_DIR",request.getSession().getServletContext().getRealPath("/")+"uhes_war\\WEB-INF\\reports\\");
parameters.put("imagepath",request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png");
parameters.put("meterid",request.getParameter("MeterNumber"));
}
if(request.getParameter("Type").equals("Meters")){
parameters.put("fromdate",request.getParameter("FromDate"));
//System.out.println(":::::FromDate::::::"+request.getParameter("FromDate"));
parameters.put("todate",request.getParameter("ToDate"));
//imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("imagepath",imagePath);
parameters.put("meterno",request.getParameter("MeterNumber"));
parameters.put("meterid",request.getParameter("MeterId"));
//System.out.println("::::MeterId::::::"+imagePath);
}
if(request.getParameter("Type").equals("Device")){
parameters.put("fromdate",request.getParameter("FromDate"));
parameters.put("todate",request.getParameter("ToDate"));
//imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("imagepath",imagePath);
parameters.put("gateway",request.getParameter("Device"));
}
if(request.getParameter("Type").equals("Gateway")){
parameters.put("fromdate",request.getParameter("FromDate"));
parameters.put("todate",request.getParameter("ToDate"));
//imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("imagepath",imagePath);
parameters.put("gateway",request.getParameter("Gateway"));
}
if(request.getParameter("Type").equals("DCU")){
parameters.put("fromdate",request.getParameter("FromDate"));
parameters.put("todate",request.getParameter("ToDate"));
//imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("imagepath",imagePath);
parameters.put("dcu",request.getParameter("DCU"));
}
if(request.getParameter("Type").equals("Sim")){
//System.out.println("::::::::user_id:::::::user_id::::::::::"+request.getParameter("userId"));
user_id=request.getParameter("userId");
//imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("imagepath",imagePath);
parameters.put("user_id", user_id);
}
if(request.getParameter("Type").equals("Office")){
parameters.put("officeId",request.getParameter("OfficeId"));
parameters.put("officeCode",request.getParameter("OfficeCode"));
parameters.put("whrClause", request.getParameter("whrClause"));
System.out.println("whrClause:::::::"+request.getParameter("whrClause"));
////System.out.println("OfficeCode:::::::::::::"+request.getParameter("OfficeCode"));
//imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("imagepath",imagePath);
}
if(request.getParameter("Type").equals("Transaction")){
parameters.put("fromdate",request.getParameter("FromDate"));
parameters.put("todate",request.getParameter("ToDate"));
parameters.put("userid",request.getParameter("userid"));
if(request.getParameter("fielddeviceno") != null) {
if(request.getParameter("fielddeviceno").equalsIgnoreCase("amp;"))
parameters.put("fielddeviceno","%");
else
parameters.put("fielddeviceno",request.getParameter("fielddeviceno"));
}
/*if(request.getParameter("meterno").equalsIgnoreCase("amp;"))
parameters.put("meterno","%");
else
parameters.put("meterno",request.getParameter("meterno"));*/
parameters.put("communicationmode",request.getParameter("communicationmode"));
imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("imagepath",imagePath);
parameters.put("gateway",request.getParameter("fielddeviceno"));
parameters.put("deviceid",request.getParameter("DeviceId"));
parameters.put("meterno",request.getParameter("meterno"));
parameters.put("meterid",request.getParameter("MeterId"));
parameters.put("responsetype",request.getParameter("responsetype"));
parameters.put("whereClause","%"+request.getParameter("WhereClause")+"%");
parameters.put("whereClause2","%"+request.getParameter("whereClause2")+"%");
parameters.put("whereClause3","%"+request.getParameter("whereClause3")+"%");
parameters.put("whereClause4","%"+request.getParameter("whereClause4")+"%");
}
/*Job scheduler Report*/
if(request.getParameter("Type").equals("SchedulerJobReport")){
parameters.put("officeId",request.getParameter("OfficeId"));
parameters.put("officeCode",request.getParameter("OfficeCode"));
parameters.put("jobGroupName",request.getParameter("jobNameText"));
parameters.put("jobName",request.getParameter("jobCommandCombo"));
parameters.put("startTime",request.getParameter("FromDate"));
parameters.put("endTime",request.getParameter("ToDate"));
//imagePath=request.getSession().getServletContext().getRealPath("/")+"styles_war/fep/images/report_header.png";
parameters.put("imagepath",imagePath);
}
//System.out.println("==============================>>>>>>>>>>>>>>>>>> "+parameters.get("meterno"));
//System.out.println("=============================>>>>>>>>>>>>>>>>>>>"+request.getParameter("Command"));
//reportFile=Sessions.getCurrent().getWebApp().getRealPath("/")+"WEB-INF/reports/"+request.getParameter("Command")+".jrxml";
reportFile=request.getRealPath("/")+"WEB-INF/reports/"+request.getParameter("Command")+".jrxml";
JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
JasperReport report = JasperCompileManager.compileReport(jasperDesign);
conn=dataSource.getConnection();
JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, conn);
conn.close();
/**
* If the report which is in the format like XLS then everything will be display in the screen
* */
if(ReportType.equals("XLS")){
//response.setContentType("application/ms-excel");
String formatDate = new SimpleDateFormat("ddMMMyyyyHHmmss").format(new Date());
String formatDatefldr = new SimpleDateFormat("").format(new Date());
//response.setHeader("Content-Disposition"," attachment; filename="+request.getParameter("Command")+"_"+formatDate+".xls");
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, baos);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporter.exportReport();
response.setHeader("Content-Disposition"," attachment; filename="+request.getParameter("Command")+"_"+formatDate+".xls");
writeReportToResponseStream(response,baos);
//Thread.sleep(5000);
//Clients.evalJavaScript("window.parent.$('img').each(function() { var li = $(this).attr('src'); if(li.indexOf('loading') != -1) { $(this).attr('style','width:40px;height:40px'); $(this).attr('src',li.replace('loading-icon.gif','check.png')); } });");
Clients.evalJavaScript("window.parent.$('img').each(function() { var li = this.$f('src').$n();alert(li); if(li.indexOf('loading') != -1) { $(this).attr('style','width:40px;height:40px'); $(this).attr('src',li.replace('loading-icon.gif','check.png')); } });");
}
if(ReportType.equals("CSV")){
String formatDate = new SimpleDateFormat("ddMMMyyyyHHmmss").format(new Date());
String formatDatefldr = new SimpleDateFormat("ddMMyyyy").format(new Date());
JRCsvExporter exporterCSV = new JRCsvExporter();
exporterCSV.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporterCSV.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, baos);
exporterCSV.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, true);
exporterCSV.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, true);
exporterCSV.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, true);
exporterCSV.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, true);
exporterCSV.exportReport();
response.setHeader("Content-Disposition"," attachment; filename="+request.getParameter("Command")+"_"+formatDate+".csv");
writeReportToResponseStream(response,baos);
Thread.sleep(5000);
Clients.evalJavaScript("window.parent.$('img').each(function() { var li = $(this).attr('src'); if(li.indexOf('loading') != -1) { $(this).attr('style','width:40px;height:40px'); $(this).attr('src',li.replace('loading-icon.gif','check.png')); } });");
//System.out.println("pdf:::::::::::1234:::"+file.getAbsolutePath());
}
if(ReportType.equals("RTF")){
String formatDate = new SimpleDateFormat("ddMMMyyyyHHmmss").format(new Date());
String formatDatefldr = new SimpleDateFormat("ddMMyyyy").format(new Date());
JRRtfExporter exporter = new JRRtfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
try{
exporter.exportReport();
}
catch (JRException e) {
throw new ServletException(e);
}
response.setHeader("Content-Disposition"," attachment; filename="+request.getParameter("Command")+"_"+formatDate+".rtf");
writeReportToResponseStream(response,baos);
Thread.sleep(5000);
Clients.evalJavaScript("window.parent.$('img').each(function() { var li = $(this).attr('src'); if(li.indexOf('loading') != -1) { $(this).attr('style','width:40px;height:40px'); $(this).attr('src',li.replace('loading-icon.gif','check.png')); } });");
//System.out.println("pdf:::::::::::1234:::"+file.getAbsolutePath());
}
}catch(Exception e){
e.printStackTrace();
}
//}
}
/**
* Writing the response data to the streams to display in the page
* */
private void writeReportToResponseStream(HttpServletResponse response,ByteArrayOutputStream baos) {
try {
ServletOutputStream outputStream = response.getOutputStream();
baos.writeTo(outputStream);
outputStream.flush();
outputStream.close();
//System.out.println("PDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
}
catch (Exception e){
e.printStackTrace();
}
}
public DataSource getDataSource(){
return dataSource;
}
}
}
test.jsjavascriptfunction checkMail(mails){
var array = mails.split(",");
var result="\n";
for(var i=0;i<array.length;i++){
var mail = array[i];
var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
if(typeof(mail) == "string"){
if(er.test(mail)){
result+=array[i]+": valid mail\n";
}else{
result+=array[i]+": invalid mail\n";
}
}else if(typeof(mail) == "object"){
if(er.test(mail.value)){
result+=array[i]+": valid mail\n";
}
}else{
result+=array[i]+": invalid mail\n";
}
}
zk.Widget.$(jq('$lbl')[0]).setValue(result);
}