ZK框架Listbox如何显示数据啊 本帖最后由 aquariusk 于 2014-08-26 16:02:14 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 listitem标签改成这样试下,<listitem value="${each }"> 估计这里也只有你懂ZK了。网上查啊 查,现在效果是:我再贴下最新的代码package com.web;import java.text.ParseException;import java.util.List;import java.util.Set;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.zkoss.zk.ui.Component;import org.zkoss.zk.ui.Executions;import org.zkoss.zk.ui.event.Event;import org.zkoss.zk.ui.event.EventListener;import org.zkoss.zk.ui.event.Events;import org.zkoss.zk.ui.select.annotation.Listen;import org.zkoss.zk.ui.util.Clients;import org.zkoss.zk.ui.util.GenericForwardComposer;import org.zkoss.zkplus.databind.BindingListModelList;import org.zkoss.zkplus.spring.SpringUtil;import org.zkoss.zul.Combobox;import org.zkoss.zul.Datebox;import org.zkoss.zul.Intbox;import org.zkoss.zul.ListModel;import org.zkoss.zul.ListModelList;import org.zkoss.zul.Listbox;import org.zkoss.zul.Listitem;import org.zkoss.zul.Messagebox;import org.zkoss.zul.Radiogroup;import org.zkoss.zul.Textbox;import org.zkoss.zul.Window;import com.entity.TrTrainReqColl;import com.service.ITrainReqCollService;@Controllerpublic class TrainReqCollController extends GenericForwardComposer { private static final long serialVersionUID = 1L; @Autowired private ITrainReqCollService trainReqCollService; TrTrainReqColl ttrc = null; WebCommon common = new WebCommon(); private Window parentWindow; private ListModelList<TrTrainReqColl> trcModel; private List<TrTrainReqColl> listTrTrainReqColl; //Add Zul Compnent Combobox cobPerson_level; Combobox cobTitle; Combobox cobCourseName; Intbox txtHours; Intbox txtNumber_of_Person; Intbox txtOrder_of_Classes; Radiogroup rdoInternalExternal; Textbox txtTarget_Description; Datebox dboxInsert_Date; Datebox dboxSend_Date; Textbox txtRe; Listbox listTRC; public Listbox getListTRC() { return listTRC; } public void setListTRC(Listbox listTRC) { this.listTRC = listTRC; } //default construct public TrainReqCollController(){ System.out.println("Enter Default ConStruct"); } //do it when first startup @SuppressWarnings("unchecked") @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); System.out.println("Enter doAfterCompose"); SpringUtil.getApplicationContext().getAutowireCapableBeanFactory().autowireBean(this); parentWindow = (Window) comp; ttrc = new TrTrainReqColl(); ttrc.setInsertDate(common.getDateNow()); // listTRC = (Listbox) parentWindow.getFellow("listTRC");// listTrTrainReqColl = trainReqCollService.getAllTRC();// BindingListModelList bindlist = new BindingListModelList<>(listTrTrainReqColl, true);// listTRC.setModel(bindlist); trcModel = new ListModelList<>(trainReqCollService.getAllTRC()); ((ListModelList<TrTrainReqColl>)trcModel).setMultiple(true); listTRC.setModel(trcModel); } public ListModelList<TrTrainReqColl> getTrcModel() { return trcModel; } public void setTrcModel(ListModelList<TrTrainReqColl> trcModel) { this.trcModel = trcModel; } @Listen("onSelect = listbox") public void updateMessage() { Set<TrTrainReqColl> selectedCars = ((ListModelList<TrTrainReqColl>)trcModel).getSelection(); int size = selectedCars.size(); showNotify(size > 0 ? size + " cars selected: " + selectedCars : "no car selected", parentWindow); } private void showNotify(String msg,Component ref){ Clients.showNotification(msg,"info",ref,"top_right",2000); } //hr add TrainReqColl info public void onClick$btnAdd() throws Exception, ParseException{ ttrc.setPersonLevel(common.getComboboxLabel(cobPerson_level)); ttrc.setTitle(Integer.parseInt(common.getComboboxLabel(cobTitle))); ttrc.setCourseName(common.getComboboxLabel(cobCourseName)); ttrc.setHours(common.getIntbox(txtHours)); ttrc.setNumberOfPerson(common.getIntbox(txtNumber_of_Person)); ttrc.setOrderOfClasses(common.getIntbox(txtOrder_of_Classes)); ttrc.setInternalExternalTraining(common.getRadioValue(rdoInternalExternal)); ttrc.setTargetDescription(common.getTextboxValue(txtTarget_Description)); ttrc.setSendDate(common.getDate(dboxSend_Date)); ttrc.setRe(common.getTextboxValue(txtRe)); try { //Clients.showBusy("page loading......"); trainReqCollService.saveAll(ttrc); this.showSuccessMessage("Insert Success!"); } catch (Exception e) { this.showErrorMessage("Insert Fail!", "plase contact with MIS"); } finally { Clients.clearBusy(); } } //insert success alert and forward next page @SuppressWarnings("unchecked") public void showSuccessMessage(String msg) { Messagebox.show(msg, "Prompt", Messagebox.OK, Messagebox.QUESTION, new EventListener() { public void onEvent(Event evt) { Executions.sendRedirect("/training/TrainReqColl.zul"); } }); } //insert fail alert public void showErrorMessage(String title, String msg) { Messagebox.show(msg, title, Messagebox.OK, Messagebox.ERROR); } }<?page title="TrainingRequireCollection" contentType="text/html;charset=UTF-8"?><zk><window title="年度訓練需求收集" border="normal" id="WinColl" width="auto" apply="com.web.TrainReqCollController" position="center,center"><div align="center"> <div align="center" width="980px"> <groupbox closable="false"> <grid fixedLayout="true"> <columns> <column width="100px" /> <column width="180px" /> <column width="130px" /> <column width="210px" /> <column width="90px" /> <column width="210px" /> </columns> <rows> <row> <label value="階層 " pre="true" /> <combobox id="cobPerson_level" autodrop="true" constraint="no empty" readonly="true"> <comboitem label="課長"></comboitem> <comboitem label="經理"></comboitem> </combobox> <label value="職等 " pre="true" /> <combobox id="cobTitle" autodrop="true" constraint="no empty" readonly="true"> <comboitem label="1"></comboitem> <comboitem label="3"></comboitem> <comboitem label="5"></comboitem> </combobox> <label value="課程名稱" pre="true" /> <combobox id="cobCourseName" autodrop="true" constraint="no empty" readonly="true"> <comboitem label="課程名稱1"></comboitem> <comboitem label="課程名稱2"></comboitem> <comboitem label="課程名稱3"></comboitem> </combobox> </row> <row> <label value="時數" pre="true" /> <intbox id="txtHours" format="0" constraint="no empty,no negative,no zero" /> <label value="人數" pre="true" /> <intbox id="txtNumber_of_Person" format="0" constraint="no empty,no negative,no zero" /> <label value="班次 " pre="true" /> <intbox id="txtOrder_of_Classes" format="0" constraint="no empty,no negative,no zero" /> </row> <row> <label value="內/外訓" pre="true" /> <radiogroup id="rdoInternalExternal"> <radio label="內訓" value="0" /> <space spacing="5px" /> <radio label="外訓" value="1" /> </radiogroup> <label value="訓練目標與說明" pre="true" /> <cell colspan="3" style="color: #00547A" valign="top"> <textbox id="txtTarget_Description" rows="1" width="450px" /> </cell> </row> <row> <label value="填寫日期" pre="true" /> <datebox id="dboxInsert_Date" format="yy-MM-dd HH:mm:ss" readonly="true" constraint="no empty" /> <label value="發送日期" pre="true" /> <datebox id="dboxSend_Date" format="yy-MM-dd HH:mm:ss" readonly="true" constraint="no empty" /> </row> <row> <label value="備註" pre="true" /> <cell colspan="3" style="color: #00547A" valign="top"> <textbox id="txtRe" rows="1" width="450px" /> </cell> </row> </rows> </grid> </groupbox> <hbox pack="center" width="980px"> <button id="btnAdd" label="Add" mold="trendy" height="27px" width="55px" /> </hbox> </div> <div height="500px"> <listbox id="listTRC" model="@{listTrTrainReqColl}" width="980px" check="true" fixedLayout="true" mold="paging" pageSize="6" emptyMessage="No items match your search"> <listhead sizable="true"> <listheader width="30px" /> <listheader label="階層" width="50px" align="center" /> <listheader label="職等" width="50px" align="center" /> <listheader label="課程名稱" width="50px" align="center" /> <listheader label="時數" width="50px" align="center" /> <listheader label="人數" width="50px" align="center" /> <listheader label="班次" width="70px" align="center" /> <listheader label="內/外訓" width="70px" align="center" /> <listheader label="訓練目標與說明" width="70px" align="center" /> <listheader label="備註" width="70" align="center" /> <listheader label="填寫日期" width="70" align="center" /> <listheader label="發送日期" width="70" align="center" /> </listhead> <template name="model"> <listitem self="@{each=ttrc}" value="${each }"> <listcell /> <listcell label="@{ttrc.personLevel}" /> <listcell label="@{ttrc.title}" /> <listcell label="@{ttrc.courseName}" /> <listcell label="@{ttrc.hours}" /> <listcell label="@{ttrc.numberOfPerson}" /> <listcell label="@{ttrc.orderOfClasses}" /> <listcell label="@{ttrc.internalExternalTraining}" /> <listcell label="@{ttrc.targetDescription}" /> <listcell label="@{ttrc.re}" /> <listcell label="@{ttrc.insertDate}"/> <listcell style="@{ttrc.sendDate}" /> </listitem> </template> </listbox> </div></div></window></zk> <div height="500px"> <listbox id="listTRC" model="@{listTrTrainReqColl}" vflex="true" width="980px" > <listhead sizable="true"> <listheader label="階層" width="300px" align="center" /> </listhead> <listitem self="@{each=ttrc}" value="${ttrc}"> <listcell label="${ttrc.id}" /> </listitem> </listbox> </div> 你那个Controller注解没用的,去掉吧。 我贴下我的代码, 你参考下,首先我的Controller继承了SelectorComposer 跟你那个是否有区别我不太确定, 老早的东西了,忘记了。@Wire private Listbox adspList; @Wire private Paging pager; @Wire private Datebox syncDateBox;我是这样注入页面元素的, 变量名就是页面的id, 这个id我看到你后来也加上上去了。 我不知道你不加@Wire注解能不能跟页面元素对应上,这个你确认下。Pagination<Adspace> page = adspaceService.getOnePage(adSpc, curr); ListModelList<Adspace> model = new ListModelList<Adspace>(page.getResult()); model.setMultiple(true); adspList.setModel(model);这里代码很清楚, serviec查询一页数据, 跟你的基本一样。 页面:<listbox id="adspList" check="true"> <listhead> <listheader label="id" /> <listheader label="编号" sort="auto" /> </listhead> <template name="model"> <listitem value="${each }"> <listcell label="${each.id }"></listcell> <listcell label="${each.adZoneId }"></listcell> </listitem> </template> </listbox> <paging id="pager" activePage="0" />跟你不太一样, 你可以参考改下,看是否有用这是 OK 非常感谢,对了还有个问题。我设置了 check="true" 我想实现批量选中删除,我后台如何获取到选中行呢? Listbox 有个getSelectedItems方法, 返回选中Listitem的集合, 如何没有勾选则集合为空 在linux下装JSP的环境怎么弄 求救 :车辆管理系统 启动页面的时候加载socket服务端进程 关于EXTjs显示问题 关于TOMCAT 内存溢出的一些问题 web.xml重新部署时出错,有懂的兄弟快帮我看一下 请教高手jsp数据库的问题 谁来帮帮我啊! 获取表单数据的方法(在线)。 有关jspsmartupload的问题?大家看看这样的代码为什么出现这样的错误! 关闭页面的时候,获取当前时间传送到后台 截取字符串,使用Java编写 [问题点数:100分] 急……
估计这里也只有你懂ZK了。网上查啊 查,现在效果是:我再贴下最新的代码
package com.web;
import java.text.ParseException;
import java.util.List;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zkplus.databind.BindingListModelList;
import org.zkoss.zkplus.spring.SpringUtil;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Radiogroup;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;
import com.entity.TrTrainReqColl;
import com.service.ITrainReqCollService;@Controller
public class TrainReqCollController extends GenericForwardComposer {
private static final long serialVersionUID = 1L;
@Autowired
private ITrainReqCollService trainReqCollService;
TrTrainReqColl ttrc = null;
WebCommon common = new WebCommon();
private Window parentWindow;
private ListModelList<TrTrainReqColl> trcModel;
private List<TrTrainReqColl> listTrTrainReqColl; //Add Zul Compnent
Combobox cobPerson_level;
Combobox cobTitle;
Combobox cobCourseName;
Intbox txtHours;
Intbox txtNumber_of_Person;
Intbox txtOrder_of_Classes;
Radiogroup rdoInternalExternal;
Textbox txtTarget_Description;
Datebox dboxInsert_Date;
Datebox dboxSend_Date;
Textbox txtRe;
Listbox listTRC;
public Listbox getListTRC() {
return listTRC;
}
public void setListTRC(Listbox listTRC) {
this.listTRC = listTRC;
} //default construct
public TrainReqCollController(){
System.out.println("Enter Default ConStruct");
}
//do it when first startup
@SuppressWarnings("unchecked")
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
System.out.println("Enter doAfterCompose");
SpringUtil.getApplicationContext().getAutowireCapableBeanFactory().autowireBean(this);
parentWindow = (Window) comp;
ttrc = new TrTrainReqColl();
ttrc.setInsertDate(common.getDateNow());
// listTRC = (Listbox) parentWindow.getFellow("listTRC");
// listTrTrainReqColl = trainReqCollService.getAllTRC();
// BindingListModelList bindlist = new BindingListModelList<>(listTrTrainReqColl, true);
// listTRC.setModel(bindlist);
trcModel = new ListModelList<>(trainReqCollService.getAllTRC());
((ListModelList<TrTrainReqColl>)trcModel).setMultiple(true);
listTRC.setModel(trcModel);
}
public ListModelList<TrTrainReqColl> getTrcModel() {
return trcModel;
}
public void setTrcModel(ListModelList<TrTrainReqColl> trcModel) {
this.trcModel = trcModel;
} @Listen("onSelect = listbox")
public void updateMessage() {
Set<TrTrainReqColl> selectedCars = ((ListModelList<TrTrainReqColl>)trcModel).getSelection();
int size = selectedCars.size();
showNotify(size > 0 ? size + " cars selected: " + selectedCars : "no car selected", parentWindow);
}
private void showNotify(String msg,Component ref){
Clients.showNotification(msg,"info",ref,"top_right",2000);
}
//hr add TrainReqColl info
public void onClick$btnAdd() throws Exception, ParseException{
ttrc.setPersonLevel(common.getComboboxLabel(cobPerson_level));
ttrc.setTitle(Integer.parseInt(common.getComboboxLabel(cobTitle)));
ttrc.setCourseName(common.getComboboxLabel(cobCourseName));
ttrc.setHours(common.getIntbox(txtHours));
ttrc.setNumberOfPerson(common.getIntbox(txtNumber_of_Person));
ttrc.setOrderOfClasses(common.getIntbox(txtOrder_of_Classes));
ttrc.setInternalExternalTraining(common.getRadioValue(rdoInternalExternal));
ttrc.setTargetDescription(common.getTextboxValue(txtTarget_Description));
ttrc.setSendDate(common.getDate(dboxSend_Date));
ttrc.setRe(common.getTextboxValue(txtRe));
try {
//Clients.showBusy("page loading......");
trainReqCollService.saveAll(ttrc);
this.showSuccessMessage("Insert Success!");
} catch (Exception e) {
this.showErrorMessage("Insert Fail!", "plase contact with MIS");
} finally {
Clients.clearBusy();
}
} //insert success alert and forward next page
@SuppressWarnings("unchecked")
public void showSuccessMessage(String msg) {
Messagebox.show(msg, "Prompt", Messagebox.OK, Messagebox.QUESTION, new EventListener() {
public void onEvent(Event evt) {
Executions.sendRedirect("/training/TrainReqColl.zul");
}
});
}
//insert fail alert
public void showErrorMessage(String title, String msg) {
Messagebox.show(msg, title, Messagebox.OK, Messagebox.ERROR);
}
}
<?page title="TrainingRequireCollection" contentType="text/html;charset=UTF-8"?>
<zk>
<window title="年度訓練需求收集" border="normal" id="WinColl" width="auto" apply="com.web.TrainReqCollController" position="center,center">
<div align="center">
<div align="center" width="980px">
<groupbox closable="false">
<grid fixedLayout="true">
<columns>
<column width="100px" />
<column width="180px" />
<column width="130px" />
<column width="210px" />
<column width="90px" />
<column width="210px" />
</columns>
<rows>
<row>
<label value="階層 " pre="true" />
<combobox id="cobPerson_level" autodrop="true" constraint="no empty" readonly="true">
<comboitem label="課長"></comboitem>
<comboitem label="經理"></comboitem>
</combobox>
<label value="職等 " pre="true" />
<combobox id="cobTitle" autodrop="true" constraint="no empty" readonly="true">
<comboitem label="1"></comboitem>
<comboitem label="3"></comboitem>
<comboitem label="5"></comboitem>
</combobox>
<label value="課程名稱" pre="true" />
<combobox id="cobCourseName" autodrop="true" constraint="no empty" readonly="true">
<comboitem label="課程名稱1"></comboitem>
<comboitem label="課程名稱2"></comboitem>
<comboitem label="課程名稱3"></comboitem>
</combobox>
</row>
<row>
<label value="時數" pre="true" />
<intbox id="txtHours" format="0" constraint="no empty,no negative,no zero" />
<label value="人數" pre="true" />
<intbox id="txtNumber_of_Person" format="0" constraint="no empty,no negative,no zero" />
<label value="班次 " pre="true" />
<intbox id="txtOrder_of_Classes" format="0" constraint="no empty,no negative,no zero" />
</row>
<row>
<label value="內/外訓" pre="true" />
<radiogroup id="rdoInternalExternal">
<radio label="內訓" value="0" />
<space spacing="5px" />
<radio label="外訓" value="1" />
</radiogroup>
<label value="訓練目標與說明" pre="true" />
<cell colspan="3" style="color: #00547A" valign="top">
<textbox id="txtTarget_Description" rows="1" width="450px" />
</cell>
</row>
<row>
<label value="填寫日期" pre="true" />
<datebox id="dboxInsert_Date" format="yy-MM-dd HH:mm:ss" readonly="true" constraint="no empty" />
<label value="發送日期" pre="true" />
<datebox id="dboxSend_Date" format="yy-MM-dd HH:mm:ss" readonly="true" constraint="no empty" />
</row>
<row>
<label value="備註" pre="true" />
<cell colspan="3" style="color: #00547A" valign="top">
<textbox id="txtRe" rows="1" width="450px" />
</cell>
</row>
</rows>
</grid>
</groupbox>
<hbox pack="center" width="980px">
<button id="btnAdd" label="Add" mold="trendy"
height="27px" width="55px" />
</hbox>
</div>
<div height="500px">
<listbox id="listTRC" model="@{listTrTrainReqColl}" width="980px" check="true" fixedLayout="true" mold="paging" pageSize="6" emptyMessage="No items match your search">
<listhead sizable="true">
<listheader width="30px" />
<listheader label="階層" width="50px" align="center" />
<listheader label="職等" width="50px" align="center" />
<listheader label="課程名稱" width="50px" align="center" />
<listheader label="時數" width="50px" align="center" />
<listheader label="人數" width="50px" align="center" />
<listheader label="班次" width="70px" align="center" />
<listheader label="內/外訓" width="70px" align="center" />
<listheader label="訓練目標與說明" width="70px" align="center" />
<listheader label="備註" width="70" align="center" />
<listheader label="填寫日期" width="70" align="center" />
<listheader label="發送日期" width="70" align="center" />
</listhead>
<template name="model">
<listitem self="@{each=ttrc}" value="${each }">
<listcell />
<listcell label="@{ttrc.personLevel}" />
<listcell label="@{ttrc.title}" />
<listcell label="@{ttrc.courseName}" />
<listcell label="@{ttrc.hours}" />
<listcell label="@{ttrc.numberOfPerson}" />
<listcell label="@{ttrc.orderOfClasses}" />
<listcell label="@{ttrc.internalExternalTraining}" />
<listcell label="@{ttrc.targetDescription}" />
<listcell label="@{ttrc.re}" />
<listcell label="@{ttrc.insertDate}"/>
<listcell style="@{ttrc.sendDate}" />
</listitem>
</template>
</listbox>
</div>
</div>
</window>
</zk>
<div height="500px">
<listbox id="listTRC" model="@{listTrTrainReqColl}" vflex="true" width="980px" >
<listhead sizable="true">
<listheader label="階層" width="300px" align="center" />
</listhead>
<listitem self="@{each=ttrc}" value="${ttrc}">
<listcell label="${ttrc.id}" />
</listitem>
</listbox>
</div>
首先我的Controller继承了SelectorComposer 跟你那个是否有区别我不太确定, 老早的东西了,忘记了。
@Wire private Listbox adspList;
@Wire private Paging pager;
@Wire
private Datebox syncDateBox;我是这样注入页面元素的, 变量名就是页面的id, 这个id我看到你后来也加上上去了。 我不知道你不加@Wire注解能不能跟页面元素对应上,这个你确认下。
Pagination<Adspace> page = adspaceService.getOnePage(adSpc, curr);
ListModelList<Adspace> model = new ListModelList<Adspace>(page.getResult());
model.setMultiple(true);
adspList.setModel(model);这里代码很清楚, serviec查询一页数据, 跟你的基本一样。 页面:<listbox id="adspList" check="true">
<listhead>
<listheader label="id" />
<listheader label="编号" sort="auto" />
</listhead>
<template name="model">
<listitem value="${each }">
<listcell label="${each.id }"></listcell>
<listcell label="${each.adZoneId }"></listcell>
</listitem>
</template>
</listbox>
<paging id="pager" activePage="0" />跟你不太一样, 你可以参考改下,看是否有用
这是
OK 非常感谢,对了还有个问题。我设置了 check="true"
我想实现批量选中删除,我后台如何获取到选中行呢?