JSP页面刷新问题

THISISWANGYI 2008-04-10 08:14:43
请各位高人帮忙,又可用的代码最好。
我有一个form关于用户填写个人信息的其中有一栏需要用户标注(用CHECKBOX)其要上传的文章的其他作者。但作者数量未知。作者的信息在数据库里(我能够将它们读出来)。
但如果用户想要的作者不在数据库中,则用户需自己添加该作者。我想要的效果是,当用户点击添加作者时,页面会弹出一个新的对话框让用户填写新作者的信息,当用户完成此任务并提交信息时,该信息会被保存在数据库中。

我困惑的地方是:当用户关闭对话框时,如何让已添加的信息在原父页面中显示出来,并且此时用户在添加作者之前所填写的信息仍然保留。

如果哪位大侠有好的解决办法,请您帮个忙,并给出一个具体的例子。(数据库操作方面的可以使省略)
...全文
1130 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
ft4509 2008-10-30
  • 打赏
  • 举报
回复
返回的是jsp页面~~要回到action再跳到jsp便可以显示新的新据、
yiyi_wx 2008-04-13
  • 打赏
  • 举报
回复
这个也是我从别人那儿得来的代码
比如说lz点击添加作者的时候触发getTranData(obj)
通过goback()设置隐藏层的组件并显示隐藏层~
当用户关闭该层后即隐藏该层,把数据显示到父层中达到不刷新的效果
这个只是代码片段,希望对lz有帮助
yiyi_wx 2008-04-13
  • 打赏
  • 举报
回复
给lz一段js代码:
var tranData;
var xmlHttpReq;
var show=document.getElementById("show");
//创建XMLHttpRequest对象
function creatHttpReq(){
if (window.ActiveXObject) {
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器
}else if (window.XMLHttpRequest) {
xmlHttpReq = new XMLHttpRequest(); //other
}
}
//发送请求,得到站点数据
function getTranData(obj){
//obj.disabled=true;
creatHttpReq();
var url="updateData?get="+obj.options[obj.selectedIndex].text;
xmlHttpReq.open("get",url,true);//创建一个新的http请求,并指定此请求的方法、URL以及验证信息(用户名/密码)
xmlHttpReq.onreadystatechange=goback;//指定当readyState属性改变时的事件处理句柄
xmlHttpReq.send(null);
}
//根据状态处理事件
function goback(){
if(xmlHttpReq.readyState==4){//返回当前请求的状态
if(xmlHttpReq.status==200){
var allData=xmlHttpReq.responseText;//将响应信息作为字符串返回
var data=allData.split("&");
var list=document.getElementById("tranList"); //复选框集合
var obj=document.getElementsByName("form1");
var lineList=document.getElementById("lineList");
del(list,obj);
del(lineList,obj);
for(l=0;l<data.length;l++) {
var da=data[l].split("|");
if(da[0]!=""&&da[1]!=""){
if(l!=0&&l%6==0){
var br=document.createElement("br");
list.appendChild(br);
}
var tbox = document.createElement("<input type='radio' id='tran' name='tran' value="+data[l]+" onClick='setValue(this.value)'>");

var txt=document.createElement("LABEL");
txt.style.width="68px";
txt.innerHTML = da[1];
list.appendChild(tbox);
list.appendChild(txt);
_displaySelect();
mask.style.visibility='visible';
massage_box.style.visibility='visible';
}
}
}
}
}
yiyi_wx 2008-04-13
  • 打赏
  • 举报
回复
用Ajax分层显示吧,偶最近也遇到类似的问题,正在研究
THISISWANGYI 2008-04-13
  • 打赏
  • 举报
回复
不知大家能否看明白我的问题。我想做一个页面的局部刷新,希望有个牛人给个思路或者例子什么的。稍微具体一点最好啦,比如您就说“用Ajax”,我这个人领悟能力不强。希望大家谅解。谢谢大家啦。:-)
THISISWANGYI 2008-04-13
  • 打赏
  • 举报
回复
回复:AWUSOFT

不是特懂,是不是把原页面的参数保留起来,在刷新的时候再传回去?不好意思,我是不是太笨了。
dbwang 2008-04-12
  • 打赏
  • 举报
回复
好东西,收藏起来了
游_子 2008-04-12
  • 打赏
  • 举报
回复
用dwr,完全可以实现你的想法
awusoft 2008-04-12
  • 打赏
  • 举报
回复
我说的思路没明白吗?
kuifont 2008-04-12
  • 打赏
  • 举报
回复
自动刷新页面

解决:

如果页面要自动刷新,但该页面有Request.Form,那么通常会出现一个提示框,需要用户确定来提交数据

,这就不是自动刷新了。下面就可以解决该问题



<Script Language="JavaScript">
<!--
var limit="0:60" //定义刷新时间

if (document.images){
var parselimit=limit.split(":")
parselimit=parselimit[0]*60+parselimit[1]*1
}
function beginrefresh(){
if (!document.images)
return
if (parselimit==1){
InputDate.action="TypeAlert.asp" //此处为该页面的名称,别忘了外面应该有一个Form,用hidden空

间保留此页面所需的Request.Form的数据!
InputDate.submit()
}
else{
parselimit-=1
curmin=Math.floor(parselimit/60)
cursec=parselimit%60
if (curmin!=0)
curtime=curmin+"分"+cursec+"秒后重刷本页!"
else
curtime=cursec+"秒后重刷本页!"
window.status=curtime
setTimeout("beginrefresh()",1000)
}
}

window.onload=beginrefresh
//-->
</Script>

这段要加到<HEAD>的上面!不知道对楼主有没有什么帮助。
其实在这个论坛也一样,你提问了,但是原来的页面信息也还是保留原来的。
FinalKing 2008-04-12
  • 打赏
  • 举报
回复
window.showModalDialog();
mengwei802 2008-04-11
  • 打赏
  • 举报
回复
window.showModalDialog();这个方法可以的
zhangjie7823 2008-04-11
  • 打赏
  • 举报
回复
在前画面填写信息后,那个作者菜单应该是个检索,而且应该是在这个画面的初始化作的,点击那个添加按钮时,触发事件js window.open(request.getContextPath() + xx.do?xx=xxx, "弹出画面"); 来调用前画面的业务处理(处理中把画面信息存入session),并弹出子画面,子画面就是插入一个作者的信息了,关闭子画面调用事件js opener.xxx事件名(); window.close(); 这个xxx事件在主画面要写,让他走主画面的初始化用js提交document.forms[0].submit(); 主画面初始化用参数判断下是初次进入的还是子画面返回的,如果子画面返回的就把session值取出在放画面上,那个作者菜单也是在初始化写的,也可以做到即时更新

关闭子画面应该是有2个按钮,一个是登陆,一个是取消,如果点登陆执行数据库插入操作并自画面刷新
<body onload="xx事件()">
xx事件里调用那个 关闭子画面调用事件js opener.xxx事件名(); window.close();

如果点取消 就window.close(); 由于没有添加作者的任何操作,只是关闭子画面,主画面的一切信息也没改变。

ajax我没用过,没办法公司没那种项目,或许ajax能处理的更好?写的比较乱,凑合看吧,能有点提示就不错了
wuzhichang_job 2008-04-11
  • 打赏
  • 举报
回复
mi 2
javadaydayup 2008-04-11
  • 打赏
  • 举报
回复
路过
awusoft 2008-04-11
  • 打赏
  • 举报
回复
上边的调用父窗口的函数不知道是否可行.我没有试过的.嘿嘿..
awusoft 2008-04-11
  • 打赏
  • 举报
回复


不能简单使用reload()啦...别 人都写好了一些信息了.你reload()一下,那原来写的不是没有了?用JS处理吧.比如说新增加了一个作者信息,当添加成功后,用JS把新增加的信息添加到原来的窗口里.

原来窗口-->新窗口.jsp-->提交保存到数据库,把ID取出来-->成功后的JSP里:用JS把页面里的参数(也就是新增加的作者的信息)传到原来窗口里.但一般是作者信息的ID,和姓名


<script>
window.openner.tt("<%=作者ID%>","<%=request.getParameter("作者姓名")%>")
</script>

在原来的窗口上加一个函数

<script>

function tt(id,name)
{
//使用DHTML技术创建一个checkbox,让它的value=ID,后边再加一个name标签

把checkbox添加到页面中显示checkbox的地方
}
</script>
maodie007 2008-04-11
  • 打赏
  • 举报
回复
js 就能简单实现
弹出窗口用div实现
别弹出新的窗口了
至于判断信息是否是需要从数据库选用ajax判断
sportq 2008-04-11
  • 打赏
  • 举报
回复
AJAX实现
老紫竹 2008-04-11
  • 打赏
  • 举报
回复
1 self.reload(), 简单有效
父窗口使用
<script>
function add(){
showModilag(......);
// 在返回时,刷新页面
self.location.reload();
}
</script>
2 可以用 Ajax.Updater() 方法更新显示的那个区域, 比如 prorotype
1) 单独制作一个显示列表的程序
2)主页面采用 <div id="SHOWTable"></div>来容纳列表
3) prototype方法
new Ajax.Updater("SHOWTable",list.jsp); 即可

3 可以用DHTML, 在 table 里面 insertRow() 就可以了, 具体的请搜索 javascript的 insertRow
加载更多回复(4)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧