最近这个问题搞的很头疼,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>
感激不尽