[Ajax4JSF] 请大侠帮忙,我的代码为什么不提交,谢谢
fzhq1970
2008-02-21
/* * FormNewCustomerSum.java * * Created on 2008年2月18日, 下午5:20 * 新增客户报表表单 */ package com.ccb.ha.ebank.form; import com.ccb.ha.common.entity.OrgInfo; import com.ccb.ha.common.report.ReportType; import com.ccb.ha.ebank.entity.ChannelPara; import com.ccb.ha.ebank.entity.NewCustomerSum; import com.ccb.ha.ebank.report.NewCustomerSumReport; import com.ccb.ha.ebank.service.INewCustomerService; import com.ccb.ha.exception.BusinessException; import com.ccb.ha.util.jsf.JSFContext; import com.ccb.ha.util.session.MustDeletedFile; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.faces.event.ActionEvent; import javax.faces.model.SelectItem; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * * @author 冯志强 */ public class FormNewCustomerSum { public static final int MAXLEVEL = 4; private static Log log = LogFactory.getLog(FormNewCustomerSum.class); private static String separator = System.getProperty("file.separator"); //当前正在展示的机构级别,用于判断是否可以上钻和下钻 private int currentLevel = 0; /** Creates a new instance of FormNewCustomerSum */ public FormNewCustomerSum() { } /** * 保存属性 newCustomerService 的值。新增客户服务 */ private INewCustomerService newCustomerService; /** * 属性 newCustomerService 的获取方法。 * @return 属性 newCustomerService 的值。 */ public INewCustomerService getNewCustomerService() { return this.newCustomerService; } /** * 属性 newCustomerService 的设置方法。 * @param newCustomerService 属性 newCustomerService 的 新值。 */ public void setNewCustomerService(INewCustomerService newCustomerService) { this.newCustomerService = newCustomerService; } /** * 保存属性 orgInfo 的值。 当前用户所在机构信息 */ private OrgInfo orgInfo; /** * 属性 orgInfo 的获取方法。 * @return 属性 orgInfo 的值。 */ public OrgInfo getOrgInfo() { return this.orgInfo; } /** * 属性 orgInfo 的设置方法。 * @param orgInfo 属性 orgInfo 的新值。 */ public void setOrgInfo(OrgInfo orgInfo) { this.orgInfo = orgInfo; if(this.orgInfo != null){ this.orgid = this.orgInfo.getId(); this.currentLevel = this.orgInfo.getOjb(); }else{ this.orgid = ""; this.currentLevel = 0; } } /** * 保存属性 orgid 的值。需要展示的机构代码 */ private String orgid; /** * 属性 orgid 的获取方法。 * @return 属性 orgid 的值。 */ public String getOrgid() { return this.orgid; } /** * 属性 orgid 的设置方法。 * @param orgid 属性 orgid 的新值。 */ public void setOrgid(String orgid) { this.orgid = orgid; } /** * 保存属性 begin 的值。统计开始时间 */ private Date begin = new Date(); /** * 属性 begin 的获取方法。 * @return 属性 begin 的值。 */ public Date getBegin() { return this.begin; } /** * 属性 begin 的设置方法。 * @param begin 属性 begin 的新值。 */ public void setBegin(Date begin) { this.begin = begin; } /** * 保存属性 end 的值。统计结束时间 */ private Date end = new Date(); /** * 属性 end 的获取方法。 * @return 属性 end 的值。 */ public Date getEnd() { return this.end; } /** * 属性 end 的设置方法。 * @param end 属性 end 的新值。 */ public void setEnd(Date end) { this.end = end; } /** * 保存属性 channel 的值。统计的分类渠道,默认全部渠道 */ private String channel = "0"; /** * 属性 channel 的获取方法。 * @return 属性 channel 的值。 */ public String getChannel() { return this.channel; } /** * 属性 channel 的设置方法。 * @param channel 属性 channel 的新值。 */ public void setChannel(String channel) { this.channel = channel; } /** * 保存属性 sums 的值。统计结果 */ private List<NewCustomerSum> sums = new ArrayList<NewCustomerSum>(); /** * 属性 sums 的获取方法。 * @return 属性 sums 的值。 */ public List<NewCustomerSum> getSums() { return this.sums; } /** * 属性 sums 的设置方法。 * @param sums 属性 sums 的新值。 */ public void setSums(List<NewCustomerSum> sums) { this.sums = sums; } /** * 保存属性 fileName 的值。报表文件名称 */ private String fileName; /** * 属性 fileName 的获取方法。 * @return 属性 fileName 的值。 */ public String getFileName() { return JSFContext.getRequest().getContextPath() + "/report/" + this.fileName; } /** *功能:生成报表 *参数: *返回:null *说明: */ public String makeReport(){ try { Date d1 = this.begin; Date d2 = this.end; this.sums = this.newCustomerService.loadNewCustomersSum( d1,d2,this.orgid,Integer.parseInt(this.channel)); //文件的绝对路径 String realPath = JSFContext.getContext().getRealPath("/"); //模板文件的绝对路径 String modal = realPath + "reportmodal" + separator + "xzkhqktjb.xls"; if(log.isDebugEnabled()){ log.debug("报表模板为:"+modal); } //建立临时报表文件 long l = new Date().getTime() ; this.fileName = "Report" + JSFContext.getSession(true).getId() + l + "." + ReportType.EXCEL.getExtName(); //生成报表 String reportName = realPath + "report" + separator + this.fileName; NewCustomerSumReport report = new NewCustomerSumReport(); report.makeReportWithModal(this.sums,reportName,modal); //准备用户退出时删除临时报表文件 MustDeletedFile file = new MustDeletedFile(reportName); JSFContext.setSessionAttribute(reportName,file); }catch(BusinessException be){ log.error(be.getMessage()); JSFContext.addMessage(null,"报表处理失败",be.getMessage()); } return null; } /** * 属性 channels 的获取方法。 * @return 属性 channels 的值。 */ public List<SelectItem> getChannels() { List<SelectItem> result = new ArrayList<SelectItem>(); List<ChannelPara> cs = this.newCustomerService.loadAllChannels(); for(int i=0;i<cs.size();i++){ SelectItem s = new SelectItem(); ChannelPara c = cs.get(i); s.setDescription(c.getChannelName()); s.setLabel(c.getChannelName()); s.setValue(c.getId().toString()); result.add(s); } return result; } /** *功能:判断当前是否有报表可以下载 *参数: *返回: *说明: */ public boolean getCanDownload(){ if((this.fileName == null)||(this.fileName.equals(""))) return false; return true; } /** *功能:判断是否可以上钻 *参数: *返回: *说明: */ public boolean isCanUp(){ //上钻的条件是当前展示机构等级小于当前用户的机构等级 return this.currentLevel < this.orgInfo.getOjb(); } /** *功能:判断是否可以下钻 *参数: *返回: *说明: */ public boolean isCanDown(){ return this.currentLevel < MAXLEVEL; } /** * 属性 currentLevel 的获取方法。 * @return 属性 currentLevel 的值。 */ public int getCurrentLevel() { return this.currentLevel; } /** * 属性 currentLevel 的设置方法。 * @param currentLevel 属性 currentLevel 的新值。 */ public void setCurrentLevel(int currentLevel) { this.currentLevel = currentLevel; } /** *功能:监听上钻下钻单击事件 *参数: *返回: *说明: */ public void upDownListener(ActionEvent event){ String level = JSFContext.getParameter("currentLevel"); this.currentLevel = Integer.parseInt(level); this.orgid = JSFContext.getParameter("newOrg"); } } <%@page contentType="text/html;charset=UTF-8"%> <%@page pageEncoding="UTF-8"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <%@taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%> <f:verbatim> <script type="text/javascript" src="<%=request.getContextPath()%>/js/calendar1.js"></script> <script language="javascript"> function doSetOrg(selectedOrg){ if(selectedOrg != ""){ var obj = document.getElementById("viewCenter:userManageForm:orgId"); if(obj.value != selectedOrg){ obj.value = selectedOrg; obj = document.getElementById("viewCenter:userManageForm"); obj.submit(); } } } </script> </f:verbatim> <h:form id="reportManageForm" accept="post"> <h:panelGrid columns="1" align="center"> <h:messages errorStyle="color:red" infoStyle="color:blue" fatalStyle="color:red" showDetail="true" globalOnly="true"/> </h:panelGrid> <h:panelGrid columns="1" align="center" width="95%"> <h:outputText value="新增客户统计" styleClass="smallcaption"/> </h:panelGrid> <h:panelGrid columns="1" align="center" width="95%" cellpadding="0" cellspacing="0"> <t:panelGrid columns="2" align="left,right" styleClass="smalltitle" width="100%"> <t:panelGroup > <h:outputText value="统计开始日期:"/> <t:inputCalendar renderPopupButtonAsImage="true" popupTodayString="今天:" popupWeekString="周次" value="#{formNewCustomerSum.begin}" id="begin" renderAsPopup="true" popupDateFormat="yyyy-MM-dd" /> <h:outputText value="统计结束日期:"/> <t:inputCalendar renderPopupButtonAsImage="true" popupTodayString="今天:" popupWeekString="周次" value="#{formNewCustomerSum.end}" id="end" renderAsPopup="true" popupDateFormat="yyyy-MM-dd" /> <h:outputText value="统计渠道:"/> <t:selectOneMenu value="#{formNewCustomerSum.channel}"> <f:selectItem itemValue="0" itemLabel="全部渠道"/> <f:selectItems value="#{formNewCustomerSum.channels}"/> </t:selectOneMenu> <t:commandButton styleClass="button" value="生成报表" action="#{formNewCustomerSum.makeReport}"> </t:commandButton> <h:outputLink rendered="#{formNewCustomerSum.canDownload}" value="#{formNewCustomerSum.fileName}"> <t:outputText value="另存为EXCEL文件"/> </h:outputLink> </t:panelGroup> </t:panelGrid> <t:dataTable align="center" style="vertical-align:top" width="100%" cellpadding="0" cellspacing="0" styleClass="content_table" rowClasses="evenColumn,oddColumn" headerClass="header" value="#{formNewCustomerSum.sums}" rowIndexVar="index" var="sum" rules="rows,cols"> <t:column> <f:facet name="header"> <h:outputText value="签约机构"/> </f:facet> <h:outputText value="#{sum.orgId}" style="align:center;word-break: break-all"/> </t:column> <t:column> <f:facet name="header"> <h:outputText value="机构名称"/> </f:facet> <h:outputText value="#{sum.orgName}" style="center" /> <t:commandLink rendered="#{(formNewCustomerSum.canDown) &&(formNewCustomerSum.orgid != sum.orgId)}" actionListener="#{formNewCustomerSum.upDownListener}"> <t:graphicImage url="/images/down.gif" /> </t:commandLink> [color=red]我希望在这个地方单击这个图标是,执行upDownListener,但是系统总是不提交,请大哥执教,非常感谢[/color] </t:column> <t:column> <f:facet name="header"> <h:outputText value="期初客户数"/> </f:facet> <h:outputText value="#{sum.baseCount}" style="align:center;word-break: break-all"/> </t:column> <t:column> <f:facet name="header"> <h:outputText value="本期新增数"/> </f:facet> <h:outputText value="#{sum.incCount}" style="align:left;word-break: break-all"/> </t:column> <t:column> <f:facet name="header"> <h:outputText value="本期销户数"/> </f:facet> <h:outputText value="#{sum.decCount}" style="align:left;word-break: break-all"/> </t:column> <t:column> <f:facet name="header"> <h:outputText value="本期末户数"/> </f:facet> <h:outputText value="#{sum.lastCount}" style="align:left;word-break: break-all"/> </t:column> </t:dataTable> </h:panelGrid> <t:inputHidden id="orgid" value="#{formNewCustomerSum.orgid}"/> </h:form> |
|
littlesuns
2008-02-25
commandLink不会提交表单,tomhawk似乎也没有用Ajax来实现actionListener,so,必须在点击的时候手动提交, like javascript, 大概浏览了一下,代码是在是太多了....-_-|||
|