对于C/S模式下的对话框弹出问题就不说了,这里只讨论B/S模式下的实现.
开发环境是:struts+hiberinate+spring
遇到的问题是在JSP页面新增成功后弹出新增成功的提示对话框.
刚开始觉得在JAVA中很不容易实现,因为以前写C#时习惯了一种写法:Response.Write("<script>alert('say what you want to say');</script>");但在JAVA中我却不知道在action中去怎么写出这样的代码了.为此感觉不好做,但又不得不做,所以就只有想另外一种办法了.问题是解决了,但总感觉有些郁闷,为什么不可以更简单的实现呢?
下面是我实现的过程.JSP页面加了一个<html:hidden property="propertyName" />,然后就是新增操作的action对应的form的后台代码中加了变量propertyName和与此对应的getter和setter属性,这样在action中当新增成功后就通过form中的setter属性对字段赋值.然后通过脚本来取得JSP页面上的隐藏控件(<html:didden/>)的value.这样做判断就可以实现了.
也不知道大家都有什么好的方法,希望贴出来学习一下.
下边是部分代码:
action部分代码:
public ActionForward sumbit(ActionMapping mapping,
....
if (isAdd) {
bookVhlForm.setBookNo(bookNo);
bookVhlForm.reset(mapping,request);
this.saveErrors(request, errors);
return mapping.findForward("bookVehicle");
}
...
return mapping.findForward("bookVehicle");
}
actionForm部分代码:
package com.portal.web.vehicleManage.form
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class BookVhlForm extends ActionForm {
...
private String bookNo;
....
public String getBookNo() {
return bookNo;
}
public void setBookNo(String bookNo) {
this.bookNo = bookNo;
}
JSP脚本:
function bookNo(){
var bookNo=document.all("bookNo").value;
if(bookNo!=""){
alert("您的预约登记已申请成功,预约登记号为:"+ bookNo);
} else{
alert("do the operate which you want!");
}
}
FeedBack:
建议用两种:
在根目录写一个公用的jsp
二,自己写一个ResponstUtils来实现,比如,我的一个实现是这样:
//提示并返回值同时关闭当前窗口,只适用于用window.open打开的窗口
public static void alertAndReturnWithOpen(HttpServletResponse response, String msg, boolean b)
{
try
{
response.setContentType("text/html; charset=GBK");
response.getWriter().println("<script>");
response.getWriter().println("alert('" + msg + "');");
if(b){
response.getWriter().println("opener.location.reload();");
}
response.getWriter().println("window.close();");
response.getWriter().println("</script>");
}
catch (IOException e)
{}
}
回复 更多评论