最近这个问题搞的很头疼,debug过了,action中执行到return "SUCCESS"就报出错误堆栈了,所以应该是jsp文件写的有问题,JSP文件中根本就没有发现getOutputStream(),引入的文件中也没有
而且更奇怪的是,在我开发的机器上和经理的电脑上都报这个错误,但是在业务的员工的电脑上没出现这个错误,所以推测是代码的某些部分可能存在不兼容的问题,因为我的电脑和经理的电脑是win7的系统,业务的员工的电脑是XP的系统,然后再测试人员的电脑上面进xp的虚拟机也不会报这样的问题
但是实在看不出来代码存在什么样的问题,百度了N条记录,说是加入2行代码的什么的,但是JSP文件中压根就没有getOutputStream()的语句存在.
贴上几段代码吧,希望大神能帮忙分析下问题:
首先是错误堆栈(win7系统):
2013-1-24 16:26:02 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet default threw exception java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalina.connector.Response.getWriter(Response.java:601) at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:196) at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:157) at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125) at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118) at org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:326) at org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:342) at org.apache.jsp.jsp.query.integrative.integrative_jsp._jspx_meth_c_005fotherwise_005f1(integrative_jsp.java:1180) at org.apache.jsp.jsp.query.integrative.integrative_jsp._jspx_meth_c_005fchoose_005f1(integrative_jsp.java:1119) at org.apache.jsp.jsp.query.integrative.integrative_jsp._jspx_meth_c_005fforEach_005f1(integrative_jsp.java:1079) at org.apache.jsp.jsp.query.integrative.integrative_jsp._jspService(integrative_jsp.java:362) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:594) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:505) at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:141) at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178) at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:343) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:213) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept(ParametersInterceptor.java:161) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.intercept(PrepareInterceptor.java:115) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at com.mangocity.ds.framework.common.controller.ActionInfoInterceptor.intercept(ActionInfoInterceptor.java:55) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:507) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:106) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:229) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274) at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148) at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) at java.lang.Thread.run(Thread.java:619)
action的代码,请求到的方法:
/** * 2008-05-06 V2.6.0 SR029 常锐 导出配送单信息 * * @return * @throws Exception */ public String exportExcelDeliveryBill() throws Exception { init(); List<String> unitIdList = new ArrayList<String>(); List<String> centerIdList = new ArrayList<String>(); // 判断是否有权限 if (null != getSystemType().getUnitList() && 0 < getSystemType().getUnitList().size() && null != getSystemType().getCenterList() && 0 < getSystemType().getCenterList().size()) { for (int i = 0; i < getSystemType().getUnitList().size(); i++) { unitIdList.add(((DeliveryUnit) getSystemType().getUnitList().get(i)).getId()); } for (int i = 0; i < getSystemType().getCenterList().size(); i++) { centerIdList.add(((DeliveryCenter) getSystemType().getCenterList().get(i)).getId()); } showOther = ((IntegrativeService) getDBService()).getDeliveryBillList(getParams(), getPage(), unitIdList, centerIdList); } showDeliveryList = "yes"; HttpServletResponse response = super.getHttpServletResponse(); response.reset(); response.setContentType("application/vnd.ms-excel");// "application/msexcel" response.setCharacterEncoding("GBK"); response.setHeader("Content-disposition", "attachment;filename=配送单综合查询.xsl"); OutputStream outStrean = response.getOutputStream(); // 获取addressList List addressList = this.getSystemType().getAreaAddressList(); HSSFWorkbook demoWorkBook = ((IntegrativeService) getDBService()).exportExcelDeliveryBill( getParams(), unitIdList, centerIdList, addressList); demoWorkBook.write(outStrean); outStrean.flush(); outStrean.close(); return SUCCESS; }
返回到的JSP页面(发出请求的也是这个页面):
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page import="org.apache.poi.hssf.usermodel.HSSFWorkbook" %> <%@ page import="com.opensymphony.xwork2.util.*" %> <%@ include file="/jsp/common/commonheader.jsp"%> <script src="<%=webPath%>/js/query.js"></script> <script src="<%=webPath%>/js/operate.js"></script> <script type="text/javascript"> function exportExcel() { if(checkQueryForm()) { queryform.action ="IntegrativeAction_exportExcelDeliveryBill.do"; queryform.submit(); } else return false; } function submitForm(){ if(checkQueryForm()) { queryform.action ="IntegrativeAction_queryByDeliveryBill.do"; queryform.submit(); } else return false; } function checkQueryForm() { if(!validate_form(queryform))return false; if(!checkDeliveryDate("billcreatedatebegin","billcreatedateend")){ return false; } if(!checkDeliveryDate("deliverydatebegin","deliverydateend")){ return false; } if(!checkDeliveryDate("deliveryendbegin","deliveryendend")){ return false; } var deliveryCD = queryform.elements["params.deliveryCD"].value; var orderCD = queryform.elements["params.orderCD"].value; var billcreatedatebegin = document.getElementById("billcreatedatebegin").value; var deliverydatebegin = document.getElementById("deliverydatebegin").value; var deliveryendbegin = document.getElementById("deliveryendbegin").value; var billcreatedateend = document.getElementById("billcreatedateend").value; var deliverydateend = document.getElementById("deliverydateend").value; var deliveryendend = document.getElementById("deliveryendend").value; var deliveryCenter = document.getElementById("deliveryCenter").value; if(deliveryCD=="" && orderCD==""){ if(deliveryCenter==""){ alert("请使用以下三种方式中的一种进行查询:\n\n1.配送中心+配送单创建时间\n2.配送中心+预约配送时间\n3.配送中心+配送完成时间"); return false; } if(billcreatedatebegin=="" && deliverydatebegin=="" && deliveryendbegin=="") { alert("请使用以下三种方式中的一种进行查询:\n\n1.配送中心+配送单创建时间或\n2.配送中心+预约配送时间或\n3.配送中心+配送完成时间"); return false; } } if(better_time(billcreatedatebegin,billcreatedateend)>180){ alert(document.getElementById("billcreatedateend").title+"不应超过六个月!"); return false; } if(better_time(deliverydatebegin,deliverydateend)>180){ alert(document.getElementById("deliverydateend").title+"不应超过六个月!"); return false; } if(better_time(deliveryendbegin,deliveryendend)>180){ alert(document.getElementById("deliveryendend").title+"不应超过六个月!"); return false; } return true; } </script> </head> <body> <form name="queryform" action="IntegrativeAction_queryByDeliveryBill.do" method="post"> <table width="20%" border="0" cellpadding="3" cellspacing="0"> <tr> <td height="18" ><strong><img src="<%=webPath%>/images/arrow.gif" width="9" height="9"> 综合查询</strong></td> </tr> </table> <table width="100%" class="table_bg" align="center" border="0" cellpadding="1" cellspacing="0"> <tr> <td><input type="hidden" id="showother" value="${showOther}" /> <input type="hidden" id="showotherinfo" value="yesorno" /> <input type="hidden" id="showdeliverylist" value="${showDeliveryList }" /> <input type="hidden" id="urgencyCopy" value="${params.urgency }" /> </td> </tr> <tr class="search_bg"> <td height="18"><img src="<%=webPath%>/images/a2.gif" width="9" height="9"> <a href="#" onClick="javascript:playTableDelivery('deliverTbl')"> <font color="#FF9933">配送单信息</font></a></td> </tr> <tr> <td><table width="100%" class="table_bg" align="center" border="0" cellpadding="1" cellspacing="0" style="display:block" id="deliverTbl"> <tr class="search_bg"> <td width="15%">配送单编号</td> <td width="32%"><input type="text" name="params.deliveryCD" value="${params.deliveryCD}" maxlength="50"></td> <td width="18%">订单编号</td> <td width="35%"><input type="text" name="params.orderCD" value="${params.orderCD}" maxlength="50"></td> </tr> <tr class="search_bg"> <td width="15%">订单来源</td> <td width="32%"><select id="billResouceOne" name="params.billResouce"> <option value="">-全部-</option> <c:forEach var="billResouce" items="${systemType.billResouce}"> <c:choose> <c:when test="${billResouce.value == params.billResouce}"> <option value="${billResouce.value}" selected>${billResouce.label}</option> </c:when> <c:otherwise> <option value="${billResouce.value}">${billResouce.label}</option> </c:otherwise> </c:choose> </c:forEach> </select></td> <td>配送方式</td> <td><select name="params.deliveryType"> <option value="">-全部-</option> <c:forEach var="deliveryType" items="${systemType.deliveryType}"> <c:choose> <c:when test="${deliveryType.value == params.deliveryType}"> <option value="${deliveryType.value}" selected>${deliveryType.label}</option> </c:when> <c:otherwise> <option value="${deliveryType.value}">${deliveryType.label}</option> </c:otherwise> </c:choose> </c:forEach> </select> </td> </tr> <tr class="search_bg"> <td>配送中心</td> <td><select name="params.centerCD" id="deliveryCenter"> <option value="">--全部--</option> </select></td> <td>配送单位</td> <td><select name="params.deliveryUnitCD" id="deliveryUnit"> <option value="">--全部--</option> </select></td> </tr> <tr class="search_bg"> <td>配送任务状态</td> <td><select name="params.deliveryState"> <option value="">-全部-</option> <c:forEach var="deliveryStateTwo" items="${systemType.deliveryState}"> <c:choose> <c:when test="${deliveryStateTwo.value == params.deliveryState}"> <option value="${deliveryStateTwo.value}" selected>${deliveryStateTwo.label}</option> </c:when> <c:otherwise> <option value="${deliveryStateTwo.value}">${deliveryStateTwo.label}</option> </c:otherwise> </c:choose> </c:forEach> </select></td> <td>收款任务状态</td> <td><select name="params.gatheringState"> <option value="">-全部-</option> <c:forEach var="deliveryState" items="${systemType.deliveryState}"> <c:choose> <c:when test="${deliveryState.value == params.gatheringState}"> <option value="${deliveryState.value}" selected>${deliveryState.label}</option> </c:when> <c:otherwise> <option value="${deliveryState.value}">${deliveryState.label}</option> </c:otherwise> </c:choose> </c:forEach> </select></td> </tr> <tr class="search_bg"> <td>配送员姓名</td> <td><input type="text" name="params.delivererName" value="${params.delivererName}" maxlength="50"></td> <td>收件人</td> <td><input type="text" name="params.addresseeName" value="${params.addresseeName}" maxlength="50"></td> </tr> <tr class="search_bg"> <td>配送接票时间</td> <td><input type="text" id="deliveryconnect" name="params.deliveryConnect" value="${params.deliveryConnect }" size="15"> <a href="javascript:showCalendar('deliveryconnect',false,'deliveryconnect')"> <img src="<%=webPath%>/images/i_date.gif" width="29" height="22" align="middle" border=0></a></td> <td>收件人联系电话</td> <td><input type="text" name="params.addresseePhone" value="${params.addresseePhone}" maxlength="50"></td> </tr> <tr class="search_bg"> <td>会员编号</td> <td><input type="text" name="params.memberName" value="${params.memberName}" maxlength="50"></td> <td>收件人手机号</td> <td><input type="text" name="params.addresseeMobile" value="${params.addresseeMobile}" maxlength="50"></td> </tr> <tr class="search_bg"> <td>第三方收件人</td> <td><input type="text" name="params.linkman" value="${params.linkman}" maxlength="50"></td> <td>第三方收件人联系电话</td> <td><input type="text" name="params.linkmanPhone" value="${params.linkmanPhone}" maxlength="50"></td> </tr> <tr class="search_bg"> <td>配送单创建时间</td> <td><input type="text" size="10" id="billcreatedatebegin" name="params.billCreateDateBegin" value="${params.billCreateDateBegin }" dataType="date"> <a href="javascript:showCalendar('billcreatedatebegin',false,'billcreatedatebegin','billcreatedateend','billcreatedateend')"> <img src="<%=webPath%>/images/i_date.gif" width="29" height="22" align="middle" border=0></a> <input type="text" size="10" id="billcreatedateend" name="params.billCreateDateEnd" value="${params.billCreateDateEnd }" title="配送单创建时间" dataType="date"> <a href="javascript:showCalendar('billcreatedateend',false,'billcreatedateend')"> <img src="<%=webPath%>/images/i_date.gif" width="29" height="22" align="middle" border=0></a></td> <td>预约配送时间</td> <td><input type="text" size="10" id="deliverydatebegin" name="params.deliveryDateBegin" value="${params.deliveryDateBegin}" dataType="date"> <a href="javascript:showCalendar('deliverydatebegin',false,'deliverydatebegin','deliverydateend','deliverydateend')"> <img src="<%=webPath%>/images/i_date.gif" width="29" height="22" align="middle" border=0></a> <input type="text" size="10" id="deliverydateend" name="params.deliveryDateEnd" value="${params.deliveryDateEnd }" title="预约配送时间" dataType="date"> <a href="javascript:showCalendar('deliverydateend',false,'deliverydateend')"> <img src="<%=webPath%>/images/i_date.gif" width="29" height="22" align="middle" border=0></a></td> </tr> <tr class="search_bg"> <td>紧急程度</td> <td><select id="urgencyOne" name="params.urgency"> <option value="">-全部-</option> <c:forEach var="urgency" items="${systemType.urgencyType}"> <c:choose> <c:when test="${urgency.value == params.urgency}"> <option value="${urgency.value}" selected>${urgency.label}</option> </c:when> <c:otherwise> <option value="${urgency.value}">${urgency.label}</option> </c:otherwise> </c:choose> </c:forEach> </select></td> <td>配送完成时间</td> <td><input type="text" size="10" id="deliveryendbegin" name="params.deliveryEndBegin" value="${params.deliveryEndBegin}" dataType="date"> <a href="javascript:showCalendar('deliveryendbegin',false,'deliveryendbegin','deliveryendend','deliveryendend')"> <img src="<%=webPath%>/images/i_date.gif" width="29" height="22" align="middle" border=0></a> <input type="text" size="10" id="deliveryendend" name="params.deliveryEndEnd" value="${params.deliveryEndEnd }" title="配送完成时间" dataType="date"> <a href="javascript:showCalendar('deliveryendend',false,'deliveryendend')"> <img src="<%=webPath%>/images/i_date.gif" width="29" height="22" align="middle" border=0></a></td> </tr> <tr><td>配送地址</td> <td><input type="text" name="params.deliveryAddress" value="${params.deliveryAddress}" maxlength="100"></td></tr> </table></td> </tr> <tr class="search_bg"> <td height="18" colspan="4" valign="middle"><img src="<%=webPath%>/images/a2.gif" width="9" height="9"> <a href="#" onClick="javascript:playTableOther('otherTbl')"> <font color="#FF9933">其他信息</font></a></td> </tr> <tr> <td><table width="100%" class="table_bg " align="center" border="0" cellpadding="1" cellspacing="0" style="display:none" id="otherTbl"> <tr class="search_bg"> <td width="15%">异常问题大类</td> <td><select name="params.questionBigCode" id="billProblemBigType"> <option value="">--全部--</option> </select></td> <td width="15%">异常问题小类</td> <td><select name="params.questionSmallCode" id="billProblemSmallType" style="display:inline;width:340"> <option value="">--全部--</option> </select></td> </tr> <tr class="search_bg"> <td width="15%">问题处理</td> <td width="35%"><input type="text" name="params.processMethod" value="${params.processMethod }"></td> <td>建单原因</td> <td colspan="3"><input type="text" name="params.createBillCause" value="${params.createBillCause }"></td> </tr> </table></td> </tr> <tr class="search_bg"> <td align="right" colspan="4"> <input type="button" class="btn" value="导 出 EXCEL" style="width:100px" onClick="exportExcel();"> <input type="submit" class="btn" value="查 询" onClick="return submitForm();"> <input type="button" class="btn" value="重 置" onClick="javascript:clearForm('queryform');"> </td> </tr> </table> <table width="20%" border="0" cellpadding="3" cellspacing="0"> <tr> <td height="18" ><strong><img src="<%=webPath%>/images/arrow.gif" width="9" height="9"> 结果列表</strong></td> </tr> </table> <table width="100%" class="table_bg" align="center" border="1" cellpadding="1" cellspacing="0" id="orderlist"> <tr align="center" class="sub_bg"> <td width="1%">紧急度</td> <td width="10%">订单编号<br>订单类型</td> <td width="11%">配送单编号<br>配送单创建时间</td> <td width="8%">会员类型<br>VIP级别</td> <td width="6%">配送单位</td> <td width="9%">配送方式<br>任务类型</td> <td width="8%">配送城市<br>/城区</td> <td width="10%">配送地址</td> <td width="10%">配送时间</td> <td width="8%">配送员姓名<br>联系电话</td> <td width="7%">截余时间</td> <td width="6%">配送任务状态</td> <td width="6%">收款任务状态</td> </tr> <c:forEach var="deliveryBill" items="${page.pageList}"> <tr align="center" class="row_bg"> <td><c:forEach var="t" items="${systemType.urgencyType}"> <c:if test="${deliveryBill[0].urgency == t.value}"> <c:if test="${t.label == '紧急'}"> <img src="${webPath}/images/dot_11.gif"></c:if> <c:if test="${t.label == '非常紧急'}"> <img src="${webPath}/images/dot_12.gif"></c:if> </c:if> </c:forEach> </td> <td>${deliveryBill[0].orderCD}<br> <c:forEach var="b" items="${systemType.billResouce}"> <c:if test="${deliveryBill[0].billResouce == b.value}"> ${b.label} </c:if> </c:forEach> </td> <td><a href="#" onClick="viewDetailForQuery('${deliveryBill[0].id}','9')">${deliveryBill[0].deliveryCD}</a><br>${deliveryBill[0].entityCreateDate} ${fn:substring(deliveryBill[0].entityCreateTime, 0, 5)}</td> <td> <c:forEach var="memberType" items="${systemType.memberType}"> <c:if test="${memberType.value eq deliveryBill[0].memberLevel}"> ${memberType.label} </c:if> </c:forEach><br> <c:choose> <c:when test="${deliveryBill[0].vipType eq '1'}"> <font class="redone">*</font> </c:when> <c:when test="${deliveryBill[0].vipType eq '2'}"> <font class="redone">**</font> </c:when> <c:when test="${deliveryBill[0].vipType eq '3'}"> <font class="redone">***</font> </c:when> <c:when test="${deliveryBill[0].vipType eq '4'}"> <font class="redone">****</font> </c:when> <c:when test="${deliveryBill[0].vipType eq '5'}"> <font class="redone">*****</font> </c:when> <c:when test="${deliveryBill[0].vipType eq '6'}"> <font class="redone">******</font> </c:when> <c:when test="${deliveryBill[0].vipType eq '7'}"> <!--img src="<%=request.getContextPath()%>/images/star7.gif">--> </c:when> </c:choose> </td> <td>${deliveryBill[2]}</td> <td><c:forEach var="t" items="${systemType.deliveryType}"> <c:if test="${deliveryBill[0].deliveryType == t.value}"> ${t.label} </c:if> </c:forEach> <br> <c:forEach var="t" items="${systemType.taskType}"> <c:if test="${deliveryBill[1] == t.value}">${t.label}</c:if> </c:forEach> </td> <td><c:forEach var="deliveryCityID" items="${systemType.areaAddressList}"> <c:if test="${deliveryBill[0].deliveryCityID == deliveryCityID.code}"> ${deliveryCityID.name} </c:if> </c:forEach> <br><c:forEach var="areaItem" items="${systemType.areaAddressList}"> <c:if test="${areaItem.code eq deliveryBill[0].deliveryZoneID && areaItem.type eq '4' && areaItem.fatherCode eq deliveryBill[0].deliveryCityID}"> ${areaItem.name} </c:if> </c:forEach> </td> <td title="${deliveryBill[0].deliveryAddress}"> ${fn:substring(deliveryBill[0].deliveryAddress, 0, 12)} </td> <td>${deliveryBill[0].deliveryDate}<br> ${fn:substring(deliveryBill[0].dsBeginTime, 0, 5)}-${fn:substring(deliveryBill[0].dsEndTime, 0, 5)}</td> <td>${deliveryBill[3]}<br>${deliveryBill[4]}</td> <td id="${deliveryBill[0].id}~${deliveryBill[1]}"><c:choose> <c:when test="${deliveryBill[0].deliveryState == 8 || (deliveryBill[0].deliveryState == 0 && deliveryBill[0].gatheringState == 8 )}"> 已完成 </c:when> <c:when test="${deliveryBill[0].deliveryState == 13 || deliveryBill[0].gatheringState == 13}"> 已取消 </c:when> <c:otherwise> <script type="text/javascript"> getDiffTime('${deliveryBill[0].id}~${deliveryBill[1]}', '${deliveryBill[0].deliveryDate}', '${deliveryBill[0].dsBeginTime}'); </script> </c:otherwise> </c:choose> </td> <td><c:forEach var="ds" items="${systemType.deliveryState}"> <c:if test="${deliveryBill[0].deliveryState == ds.value}">${ds.label}</c:if> </c:forEach> </td> <td><c:forEach var="ds" items="${systemType.deliveryState}"> <c:if test="${deliveryBill[0].gatheringState == ds.value}">${ds.label}</c:if> </c:forEach> </td> </tr> </c:forEach> <tr height="30"> <td colspan="15" align="right"><c:set value="queryform" var="form_name" scope="request" /> <jsp:include page="/jsp/common/page2.jsp" /> </td> </tr> </table> </form> <%@ include file="/jsp/common/commontail.jsp"%> </body> <script> init(); </script> </html> <script language="javascript"> var liandong=new CLASS_LIANDONG_YAO(array) liandong.firstSelectChange("根目录","deliveryCenter","${params.centerCD}"); liandong.subSelectChange("deliveryCenter","deliveryUnit","${params.deliveryUnitCD}"); </script> <script type="text/javascript"> var array=new Array(); <c:set scope="page" var="problemTypeBigSize" value="0"/> <c:set scope="page" var="problemTypeSmallSize" value="0"/> <c:forEach var="billProblemBigType" items="${systemType.billProblemTypeList}" > <c:if test="${billProblemBigType.classlevel==1}" > array[<c:out value='${problemTypeBigSize}'/>]=new Array(); array[<c:out value='${problemTypeBigSize}'/>][0]="<c:out value='${billProblemBigType.code}'/>"; array[<c:out value='${problemTypeBigSize}'/>][1]="根目录"; array[<c:out value='${problemTypeBigSize}'/>][2]="<c:out value='${billProblemBigType.questionDepict}'/>"; <c:set scope="page" var="problemTypeBigSize" value="${problemTypeBigSize+1}"/> </c:if> </c:forEach> <c:forEach var="billProblemSmallType" items="${systemType.billProblemTypeList}" > <c:if test="${billProblemSmallType.classlevel==2}" > array[<c:out value='${problemTypeSmallSize+problemTypeBigSize}'/>]=new Array(); array[<c:out value='${problemTypeSmallSize+problemTypeBigSize}'/>][0]="<c:out value='${billProblemSmallType.code}'/>"; array[<c:out value='${problemTypeSmallSize+problemTypeBigSize}'/>][1]="<c:out value='${billProblemSmallType.problemType.code}'/>"; array[<c:out value='${problemTypeSmallSize+problemTypeBigSize}'/>][2]="<c:out value='${billProblemSmallType.questionDepict}'/>"; <c:set scope="page" var="problemTypeSmallSize" value="${problemTypeSmallSize+1}"/> </c:if> </c:forEach> var liandong=new CLASS_LIANDONG_YAO(array) liandong.firstSelectChange("根目录","billProblemBigType","${params.questionBigCode}"); liandong.subSelectChange("billProblemBigType","billProblemSmallType","${params.questionSmallCode}"); </script>
感激不尽