ajax+struts报java.lang.IllegalStateException请高手指教

chrisl8080 2008-06-09 12:02:56
JS
function getResult(stateVal)
{
var url = "./sample.do?method=changeAjax";
if(window.XMLHttpRequest)
{
req = new XMLHttpRequest();
}else if(window.ActiveXObject)
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
if(req)
{
req.open("GET",url,true);
req.onreadystatechange = complete;
req.send(null);
}
}
function complete()
{
if(req.readyState == 4)
{
if(req.status == 200)
{
var city = req.responseXML.getElementsByTagName("city");
//alert(city.length);
var str = new Array();
for(var i=0;i<city.length;i++)
{
str[i] = city[i].firstChild.data;
}
alert(document.getElementById("city"));
buildSelect(str,document.getElementById("city"));
}
}
}
function buildSelect(str,sel)
{
sel.options.length=0;
for(var i=0;i<str.length;i++)
{
sel.options[sel.options.length] = new Option(str[i],str[i])
}
}


JSP
<select name="state" onChange="getResult(this.value)">
<option value="">selsect</option>
<option value="zj">zj</option>
<option value="zs">js</option>
</select>

<select id="city"></select>

ACTION
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
response.setHeader("Cache-Control","no-cache");
String state = request.getParameter("state");
StringBuffer sb = new StringBuffer("<state>");
if("zj".equals(state))
{
sb.append("<city>hz1</city><city>hz2</city>");

}else if("zs".equals(state))
{
sb.append("<city>nj</city><city>yz</city><city>sz</city>");
}
sb.append("</state>");
PrintWriter out = response.getWriter();
out.write(sb.toString());
out.close();
我觉得是ACTION中的问题,是不是和STRUTS中的response有冲突,请问应该怎么解决.谢谢.
...全文
159 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
街头小贩 2008-06-09
  • 打赏
  • 举报
回复
你的URL和4楼提供的一样么?
老紫竹 2008-06-09
  • 打赏
  • 举报
回复
at jp.co.lce.waf.utils.EncodingFilter.doFilter(EncodingFilter.java:25)

我看你先把这个过滤器屏蔽掉,运行看看异常信息吧。
chrisl8080 2008-06-09
  • 打赏
  • 举报
回复
前面没有任何输出
完整的异常是
java.lang.IllegalStateException:
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:302)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at jp.co.lce.waf.utils.EncodingFilter.doFilter(EncodingFilter.java:25)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
老紫竹 2008-06-09
  • 打赏
  • 举报
回复
java.lang.IllegalStateException

可以肯定是Java方面的问题。你的异常不完整,无法判断具体原因。

response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
response.setHeader("Cache-Control","no-cache");

这几句之前不能有任何输出,否则会有异常出来。

仔细看看异常里面到底是哪一行的问题
chrisl8080 2008-06-09
  • 打赏
  • 举报
回复
能把二级下拉列表读出来,但是还是报java.lang.IllegalStateException:错误,请问哪里出的这个错误,现在看来ACTION中应该没什么问题,因为我每行都输出一个字符,知道最后都没什么问题,应该怎么改呢.
falcon272003 2008-06-09
  • 打赏
  • 举报
回复
var url = "./sample.do?method=changeAjax&state="+stateVal;
chrisl8080 2008-06-09
  • 打赏
  • 举报
回复
TO xiaofanku
从request.getParameter("state");中得到state的值.
街头小贩 2008-06-09
  • 打赏
  • 举报
回复
你在java.lang包下看一看:
public class IllegalStateException extends RuntimeException
在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。
街头小贩 2008-06-09
  • 打赏
  • 举报
回复
是不是和STRUTS中的response有冲突
re:
不可能!我写过很多还没有发现!你告诉我:request.getParameter("state");
state的值从哪得来?
是这吗?==>var url = "./sample.do?method=changeAjax";

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧