整体功能:查询数据库然后把记录显示在一个页面(show.jsp),每条记录前有一个checkbox用来选定,这个页面中有4个按钮,分别的添加,删除,修改,详细。要求按添加,修改,详细时要弹出新页面,并且保持show.jsp不变。修改,添加页面提交以后,要自动关闭本身并且show.jsp自动刷新,显示添加或者修改的记录。要求用Struts实现。
我遇到的问题是:
1.按钮的判断应该在show.jsp里还是应该写在Action里?我用JS脚本能把按钮的name传到Action里进行判断。然后进行新页面的弹出,但这时候show.jsp已经提交到Action里了,成了一个空白页面。应该怎么解决或者我的思路是不是有问题?2.也可以在show.jsp里边直接打开新页面,但是我这样的话怎么判断checkbox我选择的是哪条记录?(也就是我要传一个记录的主键). 在这里也想问下如果2个JSP页面,第一个有类似checkbox的东西,第2个页面怎么来接收这个参数,或者怎么取得传递的值。我知道有requset.SetAttribute();
但checkbox或者radio应该怎么样保存参数?3.在修改或者添加页面按了提交按钮之后怎么自动关闭当前页?4.有没有热心人能帮我大致的理一下思路,这几天问了好几个人,模式改了好几次,现在脑子里乱乱的,呵呵,第一次写东西,请多指教。声明:问题解决后马上给分,绝不食言

解决方案 »

  1.   

    我觉得按钮的判断应当写在Action里。在show.jsp里调用如下代码:
    var updateWindow = "./action.do?value=checkValue&option=update";
     window.showModalDialog(updateWindow,"","resizable:no;status:no;dialogWidth=400px;dialogHeight=300px");
    window.location.reload();
    为了能保证在页面刷新前后台完成修改工作,最后再做一个修改成功通知页面,里边有关闭按钮。
    上面的程序中value表示你选中的checkbox值,option表示你点的按钮,如修改按钮。再Strucs的Action中判断一下option的值,决定跳到哪页。记得在子窗体的<body>之上加:<base target="_self">代码。你试一下,我就是这么用的。
      

  2.   

    1、按钮的判断可以在页面上也可以在Action中。show.jsp会变成空白,是因为你的定位不正确。作如下修改:先打开一个空白页,再将form的target定位到这个页面上(具体参数意义请参考相关文档):
    window.open("about:blank","newPage","");form.target = "newPage";
    2、checkbox的值传递后台是一个数组,并且里面的值,使你在页面上选中的值。接收时使用:
    request.getParameter("checkboxname");怎样保存参数,就不用费心了,它会自动完成。
    3、在提交时使用:window.close();这样就可以关闭了。
      

  3.   

    楼上的谢谢你们的建议,我在show.jsp中加了个隐藏域,此页面相关代码如下:
    function servlet(obj)
    {
    switch(obj.name){
    case 'xiangxi':
    return setAction();break;
    case 'add':
    return setAction();break;
    case 'xiugai':
    return setAction();break;
    case 'delete':
    return confirmDel();break;
    }
    }
    function setAction(obj){show.flag.value=obj.name;}function confirmDel(){
    if(confirm('确定要删除吗?')){location="serv?flag='delete'";}
    return false;
    }
    </script>
    <form name="show" method="post" action="sAction.do"><input type="checkbox" name="c" value="<%=fb.getStu_id()%>"><input type="hidden" name="flag" value="">          
        <input type="Image" name="xiangxi" src="image/xiangxi.JPG" onclick="return servlet(this)">
            
        <input type="Image" name="add" src="image/tianjia.JPG" onclick="return servlet(this)">
            
        <input type="Image" name="xiugai" src="image/xiugai.JPG" onclick="return servlet(this)">
            
        <input type="Image" name="delete" src="image/shanchu.JPG" onClick="return servlet(this)">
    在sAction里,用String flag = Request.getParameter("flag");来接收按钮值,用  String value[] = Request.getParameterValues("c");来接收checkbox,然后用循环取;这样都能得到值,判断也没问题,就是点按钮以后地址栏里的...\show.jsp变成...\sAction.do,然后页面空白。
    还有一种想法是在show.jsp里边直接打开页面,但传不了checkbox的值。