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 :
insert after component
15guest172.68.106.1691mum59Sep 6, 2024 7:44:46 AMlinkinsert after component
14guest172.68.106.1431mum59Sep 6, 2024 7:10:37 AMlinkAnother new ZK fiddle
5guest172.68.106.1843aipc9bSep 6, 2024 7:09:34 AMlinkUpdate listmodel doesn't affect Paging status
1guest172.70.207.2011hlltmhSep 6, 2024 6:37:41 AMlinkAnother new ZK fiddle
4guest172.68.106.1693aipc9bSep 6, 2024 6:35:00 AMlinkAnother new ZK fiddle
3guest172.68.106.1683aipc9bSep 6, 2024 6:34:19 AMlinkAnother new ZK fiddle
2guest172.68.106.1493aipc9bSep 6, 2024 6:32:46 AMlinkAnother new ZK fiddle
1guest172.68.106.1433aipc9bSep 6, 2024 6:27:54 AMlinkinsert after component
13guest172.68.106.1841mum59Sep 6, 2024 6:22:16 AMlinkinsert after component
12guest172.68.106.1431mum59Sep 6, 2024 6:19:22 AMlinkZK File Upload Exmaple
20guest172.71.134.711p66ij3Jun 10, 2024 11:21:13 AMlinkresources
index.zulzul<zk>
<window border="normal" title="hello" apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('pkg$.FileUploadViewModel')">
<textbox width="75%" name="dosPath" tabindex="0"
value="@bind(vm.dosPath)" maxlength="255" />
<button id="btnUpload" label="Upload"
onUpload="@command('onFileUpload')" upload="@load(vm.uploadString)"
mold="trendy" />
<div style="padding-left: 10px;padding-right: 10px;">
<listbox model="@load(vm.attachmentFileList)"
visible="@load(not empty vm.attachmentFileList)" sclass="listbox">
<listhead>
<listheader width="93%"></listheader>
<listheader width="7%"></listheader>
</listhead>
<template name="model" var="var">
<listitem>
<listcell style="cursor:auto">
<label tooltiptext="@load(var.fileName)"
value="@load(var.fileName)" maxlength="65">
</label>
</listcell>
</listitem>
</template>
</listbox>
</div>
</window>
</zk>
FileUploadViewModel.javajava
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.activation.MimetypesFileTypeMap;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.input.ReaderInputStream;
import org.zkoss.bind.BindContext;
import org.zkoss.bind.BindUtils;
import org.zkoss.bind.annotation.AfterCompose;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.util.media.Media;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.UploadEvent;
import org.zkoss.zk.ui.select.Selectors;
import org.zkoss.zk.ui.select.annotation.Listen;
public class FileUploadViewModel {
private List<AttachmentFile> attachmentFileList;
private String dosPath;
private String uploadString;
private Long maxUploadedFileSize;
@AfterCompose
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
Selectors.wireComponents(view, this, false);
maxUploadedFileSize = 2097152L;
uploadString = "true,multiple=false,maxsize=" + maxUploadedFileSize;
}
@Command("onFileUpload")
public void onFileUpload(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) {
UploadEvent upEvent = null;
Object objUploadEvent = ctx.getTriggerEvent();
upEvent = (UploadEvent) objUploadEvent;
if (upEvent != null) {
attachedFile(upEvent.getMedias());
}
}
private void attachedFile(Media[] mediaArray) {
AttachmentFile attachmentFile = null;
String subString = ".";
SimpleDateFormat dateFormat = new SimpleDateFormat("ddMMyyyyHHmmssSSS");
Calendar cal = Calendar.getInstance();
if (mediaArray.length > 0) {
for (Media media : mediaArray) {
InputStream inputStream = null;
InputStream inputStream1 = null;
attachmentFile = new AttachmentFile();
try {
inputStream = media.getStreamData();
inputStream1 = media.getStreamData();
} catch (Exception e1) {
try {
inputStream = new ReaderInputStream(media.getReaderData());
inputStream1 = new ReaderInputStream(media.getReaderData());
} catch (Exception e) {
}
}
if (inputStream1 != null) {
try {
File tempFile = File.createTempFile("Attachment", ".blob");
FileOutputStream fos = new FileOutputStream(tempFile);
IOUtils.copy(inputStream1, fos);
fos.close();
attachmentFile.setUploadFileSize(new Long(tempFile.length()).intValue());
tempFile.delete();
} catch (FileNotFoundException e) {
} catch (IOException e) {
} finally {
try {
inputStream1.close();
} catch (IOException e) {
}
}
}
if (inputStream != null) {
MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap();
String mediaContent = mimeTypesMap.getContentType(media.getName().toLowerCase());
String mediaFormat = FilenameUtils.getExtension(media.getName().toLowerCase());
/**
* String mediaContent = media.getContentType(); String mediaFormat = media.getFormat();
**/
attachmentFile.setUploadedfile(inputStream);
mimeTypesMap.getContentType(media.getName());
if (attachmentFile.getUploadFileSize() != null && attachmentFile.getUploadFileSize() > 0) {
attachmentFile.setFileName(media.getName() + " (" + attachmentFile.getUploadFileSize() + ")");
} else {
attachmentFile.setFileName(media.getName());
}
attachmentFile.setFileFormat(mediaFormat);
attachmentFile.setAttachmentFileSuffixUpload(mediaFormat);
attachmentFile.setAttachmentContentTypeUpload(mediaContent);
attachmentFile.setSaveFiletype(mediaFormat);
attachmentFile.setBeforeExtension(media.getName().substring(0, media.getName().lastIndexOf(subString)));
attachmentFile.setAfterExtension(media.getName().substring(media.getName().lastIndexOf(subString) + 1, media.getName().length()));
attachmentFile.setFileNameToUpload(new File(attachmentFile.getBeforeExtension() + "." + attachmentFile.getAfterExtension()));
attachmentFile.setAttachmentFileAliasUpload(attachmentFile.getBeforeExtension() + "." + attachmentFile.getAfterExtension());
// In case of N/W save Path, file name will get the timestamp if file with the same name already exists.
if (attachmentFileList == null) {
attachmentFileList = new ArrayList<AttachmentFile>();
}
attachmentFileList.add(attachmentFile);
}
BindUtils.postNotifyChange(null, null, this, "attachmentFileList");
}
}
}
@Listen("onDropFile = #btnUpload")
public void onDropFile(Event evt) {
if (evt.getData() != null) {
Messagebox.show("Uploaedd File Size exceeded");
}
}
public Long getMaxUploadedFileSize() {
return maxUploadedFileSize;
}
public void setMaxUploadedFileSize(Long maxUploadedFileSize) {
this.maxUploadedFileSize = maxUploadedFileSize;
}
public List<AttachmentFile> getAttachmentFileList() {
return attachmentFileList;
}
public void setAttachmentFileList(List<AttachmentFile> attachmentFileList) {
this.attachmentFileList = attachmentFileList;
}
public String getDosPath() {
return dosPath;
}
public void setDosPath(String dosPath) {
this.dosPath = dosPath;
}
public String getUploadString() {
return uploadString;
}
public void setUploadString(String uploadString) {
this.uploadString = uploadString;
}
}
AttachmentFile.javajava
import java.io.File;
import java.io.InputStream;
import java.io.Serializable;
public class AttachmentFile {
private String fileName;
private File fileNameWithPath;
// Made inputStream transient as they are machine dependent and cannot be
// shared.
private transient InputStream uploadedfile;
private String beforeExtension;
private String afterExtension;
private File fileNameToUpload;
private String saveFiletype;
private String attachmentContentTypeUpload;
private String fileFormat;
private Integer uploadFileSize;
private String dosPath;
private String oldDosPathUpload;
private String attachmentFileAliasUpload;
private String attachmentFileSuffixUpload;
private String uploadName;
private String tableName;
private Integer tableRSN;
private String fileSavePath;
private String folderType;
private File tempFile;
private boolean focusRow;
public File getTempFile() {
return tempFile;
}
public void setTempFile(File tempFile) {
this.tempFile = tempFile;
}
public String getFolderType() {
return folderType;
}
public void setFolderType(String folderType) {
this.folderType = folderType;
}
public String getFileSavePath() {
return fileSavePath;
}
public void setFileSavePath(String fileSavePath) {
this.fileSavePath = fileSavePath;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Integer getTableRSN() {
return tableRSN;
}
public void setTableRSN(Integer tableRSN) {
this.tableRSN = tableRSN;
}
public String getUploadName() {
return uploadName;
}
public void setUploadName(String uploadName) {
this.uploadName = uploadName;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public File getFileNameWithPath() {
return fileNameWithPath;
}
public void setFileNameWithPath(File fileNameWithPath) {
this.fileNameWithPath = fileNameWithPath;
}
public InputStream getUploadedfile() {
return uploadedfile;
}
public void setUploadedfile(InputStream uploadedfile) {
this.uploadedfile = uploadedfile;
}
public String getBeforeExtension() {
return beforeExtension;
}
public void setBeforeExtension(String beforeExtension) {
this.beforeExtension = beforeExtension;
}
public String getAfterExtension() {
return afterExtension;
}
public void setAfterExtension(String afterExtension) {
this.afterExtension = afterExtension;
}
public File getFileNameToUpload() {
return fileNameToUpload;
}
public void setFileNameToUpload(File fileNameToUpload) {
this.fileNameToUpload = fileNameToUpload;
}
public String getSaveFiletype() {
return saveFiletype;
}
public void setSaveFiletype(String saveFiletype) {
this.saveFiletype = saveFiletype;
}
public String getAttachmentContentTypeUpload() {
return attachmentContentTypeUpload;
}
public void setAttachmentContentTypeUpload(String attachmentContentTypeUpload) {
this.attachmentContentTypeUpload = attachmentContentTypeUpload;
}
public String getFileFormat() {
return fileFormat;
}
public void setFileFormat(String fileFormat) {
this.fileFormat = fileFormat;
}
public Integer getUploadFileSize() {
return uploadFileSize;
}
public void setUploadFileSize(Integer uploadFileSize) {
this.uploadFileSize = uploadFileSize;
}
public String getDosPath() {
return dosPath;
}
public void setDosPath(String dosPath) {
this.dosPath = dosPath;
}
public String getOldDosPathUpload() {
return oldDosPathUpload;
}
public void setOldDosPathUpload(String oldDosPathUpload) {
this.oldDosPathUpload = oldDosPathUpload;
}
public String getAttachmentFileAliasUpload() {
return attachmentFileAliasUpload;
}
public void setAttachmentFileAliasUpload(String attachmentFileAliasUpload) {
this.attachmentFileAliasUpload = attachmentFileAliasUpload;
}
public String getAttachmentFileSuffixUpload() {
return attachmentFileSuffixUpload;
}
public void setAttachmentFileSuffixUpload(String attachmentFileSuffixUpload) {
this.attachmentFileSuffixUpload = attachmentFileSuffixUpload;
}
public boolean isFocusRow() {
return focusRow;
}
public void setFocusRow(boolean focusRow) {
this.focusRow = focusRow;
}
}