- 论坛徽章:
- 0
|
本文处理的问题是:由一个JSP页面提交一个请求,在处理这个请求之前,先要进行一个逻辑判断,由此判断决定是否对此请求进行处理,并且这个逻辑判断只能在后台的代码里进行,不能在JSP页面用JS完成。这里的提示也就是针对不对请求进行处理时,返回原页面或指定页面,并以弹出JS窗口的形式进行提示。
本文实现的方式有两种,相信用ajax实现会更帅气,但本文由于时间等原因,没用ajax去实现。
1 返回一段JS代码,进行提示并实现跳转
if(state>1){ // 逻辑判断的条件
String ctx=request.getContextPath();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("");
out.print("alert('当前项目存在相关项目,不可删除!');"); //此提示写死了
out.print("window.location.href='"+ctx+"/mypath/action1.do?id="+Id+"'");
out.print("");
out.close(); //这句不可不写
return mapping.findForward("complete");
}
2 由Action实现跳转并加入是否进行提示的标识,在页面上用JS进行提示
1 页面上提交请求到ACTION 1
2 ACTION 1处理请求,如要跳转,则跳转到一个ACTIN 2
3 ACTTION 2方法中request加入标识,以便在页面上用JS获得并提示相关信息
4 用于提示的页面上用JS获得标识,并进行提示。
ACTION 1:
return mapping.findForward("alertCanNotDelete");
配制文件:
action path="/mypath/action1" name="myForm" scope="request"
parameter="method"
type="com.Action1">
forward name="alertToCanNotDelete"
path="/mypath/action2.do?method=alertMethod">
forward>
action>
ACTION 2: alertMethod方法:
request.setAttribute("alertNote", "alertNote");
return mapping.findForward("showpage");
jsp 页面上JS显示:
调用 入口:
获得标识并显示:
function noteAlert(){
var alertNote = "${alertNote}";
if("alertNote" == alertNote)
{
alert("当前项目存在相关项目,不可删除!"); //可放在资源文件里
}
}
1,2这两种方法相比,第2种方法能够将提示放在资源文件里,轻松实现多语言显示。而1达到这样的效里比较麻烦,可以考虑自己编码实现,大体思路是先获得当前采用什么语言,再去读取相应的资源文件,再获得相应属性的值进行显示。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/103251/showart_2057314.html |
|