posts - 3,  comments - 9,  trackbacks - 0

  对于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!");
           } 
         }

posted on 2006-07-28 16:27 Lazy dog 阅读(15064) 评论(9)  编辑  收藏 所属分类: Some Other

FeedBack:
# re: Java中关于弹出对话框的问题
2006-07-28 17:31 | hiswing
其实java中也很好实现这个功能。
function check() {
var flag = '<%=request.getAttribute("key")%>';
if (flag != "") {
alert("您的预约登记已申请成功,预约登记号为:"+ bookNo);
} else {
alert("do the operate which you want!");
}
}

只要在Action中加入:request.setAttribute("key", "");  回复  更多评论
  
# re: Java中关于弹出对话框的问题
2006-07-28 17:35 | hu
我也在痛苦中。
用的方法也很土。
就是在action设置一个变量。  回复  更多评论
  
# re: Java中关于弹出对话框的问题
2006-07-28 17:56 | liujia
java里面也有response对象阿,如果你用的是struts,那就和c#没什么区别;如果是webwork,倒是不方便直接拿到response对象  回复  更多评论
  
# re: Java中关于弹出对话框的问题
2006-07-29 14:44 | endisoft
方法的确有点普通
不过,也不错了  回复  更多评论
  
# re: Java中关于弹出对话框的问题
2006-07-30 10:13 | IBM
PrintWriter out = response.getWriter();
out.print("<script>alert('say what you want to say');</script>");
out.colose();
return mapping.findForward("......");  回复  更多评论
  
# re: Java中关于弹出对话框的问题
2006-07-30 16:44 | jspark
这种方法实现有点累赘,而且不能重用。

建议用两种:
在根目录写一个公用的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)
{}
}
  回复  更多评论
  
# re: Java中关于弹出对话框的问题
2006-07-31 08:28 | Lazy dog
谢谢大家给出了这么多的方法和提示,思路开阔了好多.  回复  更多评论
  
# re: Java中关于弹出对话框的问题
2006-08-01 12:46 | lionheart163
@jspark
这还不如做成一个taglib,按不同参数进行调用,

还有个问题,如果client 和server要交互几次,根据confirm的结果提交不同的表单,然后又一个confirm,不知道有什么幽雅的方法实现吗?好象srping webwork有这方面的内容,有时间去研究下  回复  更多评论
  
# re: Java中关于弹出对话框的问题
2006-08-06 23:02 | 誰伴我闖蕩
PrintWriter out = response.getWriter();
out.write( "<script language=\"javascript\">" );
out.write( "alert(\"" + msg + "\");" );
out.write( "location.href=\"" + url + "\";" );
out.write( "</script>" );
return null;  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
do something by java

<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜