既然List显示没有问题 ,那么为什么页面看不见 ,我猜测 是 页面的其他代码将 页面显示的内容抹去了 。
提交内容的核心代码如下 :
function submitRequest(){
clearError();
var changeValue=$("#changeValue").attr("value");
var url="<%=basePath%>system/gmmanage/gm!executeGM.action?serverID="
+serverID+"&gmID="+gmID;
if (changeValue!=""){
url=url+"&changeValue="+changeValue;
}
var error=$("#error");
$("#submitButton").attr("disabled","true");
$.get(url,function (data,textStatus){
$("#submitButton").attr("disabled","");
if (textStatus=="success"){
error.html(data);
}else{
error.html("textStatus="+textStatus);
}
});
}
用的是Jquery ,一个js的库(dayThree才刚刚知道) 提交请求 是以get方式提交,提交之后 还 有个回调 。这就是 ajax 的基本做法吧 。
没用过ajax ,决定改用 form 方式改写表单 。
<s:form method ="post" action="<%=basePath%>system/gmmanage/gm!executeGM.action">
<input type="submit" class="sear-sub" value="查询">
依然无效,list内容还是不显示 , 看来不是Ajax 导致的显示内容被删除 。
找了参照项目源代码的作者来检查,他也没查出jsp页面的问题。
那是不是jsp页面没有刷新呢? 没有刷新,table当然不会显示 。
参照struts Tutorials 的helloworld 程序。 编写了一个message 来验证页面是否刷新。
在页面中加入
<h2><s:property value="message" /></h2>
<h2><%=message%></h2>
<h2>${message}</h2>
三个message信息来验证 。
action中当然有message的配置代码:
private String message;
message = "roleList in empty ";
if(roleList.size()>0){
message = "roleList in not empty";
}
结果message一直都是roleList in empty 。 提交表单之后也是 。 所以页面没有刷新 。
同时我意识到 标签的作用 <h2>${message}</h2>这种方式非常简洁,不用再写request.getAttribute() 语句。
但是我在jsp页面打断点能接收到roleList的值啊!!!所以我debug的jsp 页面跟 程序显示的jsp 页面不是同一个页面。
在 项目中加入一个几乎是空的测试页面 ,程序应该返回该页面吧?(赞扬一下struts的 annotation ,与Action紧密结合,比专门写xml的配置文件方便多了)
@Result(name="result", location="/system/gmmanage/gmResult.jsp", type="dispatcher"),
我猜测 应用 页面会显示 gmResult.jsp 页。
事实是 ,action 确实 跳到了gmResult.jsp 页。 应用页面还是没有变化 !
所以问题算是找到了 : 应用页面没有跟随程序跳转。
解决方案还是没有谱,还是先回家吃饭吧。