struts2如何实现弹出action返回的错误信息
方法1:
在跳转的页面写入如下代码:
<script type="text/javascript">
//错误提示信息
var msg=""+'${request.tipMessage}';
if(msg!=""){
alert(msg);
}
//-->
</script>
在对应的action中写入如下代码:
message = "课程已结束无法报名!";
request.setAttribute("tipMessage", message);
这样就完成了。
方法2:
直接在action中写入如下代码:
PrintWriter outjs = response.getWriter();
outjs.print("<script>alert('成功');window.location.reload();</script>");
return null;
首先,response.getWriter()需要try,catch;而且有编码问题。
window.location.reload();如果发现页面一直刷新不跳转;请把这句话去掉。
本人一直就讨厌编码问题;虽然都可以解决。推荐第一种方法。
方法3:
是用jQuery;进行ajax验证;
(1)页面写入如下代码:
function checkName(name) {
var userMessage = document.getElementById("userMessage");
if (name == "") {
userMessage.innerHTML = "<font color=red>请输入用户名</font>";
} else {
//检查用户名是否存在
jQuery.get('findPasswordAction_validateUsername?username=' + name, null, callback);
}
username = name;
nameChecked = true;
}
function callback(data) {
var userMessage = document.getElementById("userMessage");
if(data == 1){
userMessage.innerHTML = "";
Bname = true;
if(type == "cryptoguard"){
validateCryptoguard();
}
}else if(data == 0){
userMessage.innerHTML = "<font color=red>该用户名不存在!</font>";
Bname = false;
}
}
(2)action写入如下代码:
/**
* ajax校验用户名是否存在
* 存在该用户,向页面返回1
* 不存在该用户,想页面返回0
*/
public void validateUsername(){
String username = request.getParameter("username");
Boolean flag = false;
try {
flag = userFacade.exsitUser(username);
} catch (BaseAppException e) {
Response response = HandleExceptionUtil.handleException(e, e
.getMessage(), null, null);
} catch (BaseAppRuntimeException e) {
Response response = HandleExceptionUtil.handleException(e, e
.getMessage(), null, null);
} finally {
}
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
int i = 0;
if(flag){
i=1;
}
out.println(i);
out.flush();
out.close();
}
解释一下:
首先;页面填写用户名;如果不填写;直接提示;如果填写;会执行
jQuery.get('findPasswordAction_validateUsername?username=' + name, null, callback);
第一个参数是请求的url;第二个可选。规定连同请求发送到服务器的数据;第三个可选,是回调方法;这里就是下面的callback;
action中方法返回值flag就是页面callback方法中的data参数;然后执行alert();个人觉得ajax更慢……推荐第一种,