小弟近日在做一个附件上传的程序,碰到一个小问题无法解决,程序思路是每点击一次添加附件图标,执行一次addfj()脚本,刷新一次页面,出现一个type类型为file的输入框,
现在遇到的问题是:第二次点击添加附件图标后,前一次文本框里选定的值会被清空,在此处<input name="fj<%=i%>" type="file" size="35">加上value=<%=fname[i]%>无济于事,特请教各位,刷新页面后如何才能保存文本框的值?附代码如下 <%
int total=0;
String fname[]=null;
if(request.getParameter("total")!=null&&request.getParameter("total").trim().length()!=0){
total = Integer.parseInt(request.getParameter("total"));
}
for(int j=0;request.getParameter("fj"+j)!=null;j++)
{
fname[j] = request.getParameter("fj"+j);
}
%>
<script language="javascript">
function addfj(){
var totalnum = <%=total%>;
document.myform.action="attachment.jsp?total=<%= total + 1%>";
document.myform.submit();
}
</script>
<body>
<form name="myform" method="post">
<table class="lowcolor" width="100%" border="0" cellpadding="3" cellspacing="0">
<tr><td><a href="javascript:addfj();"><img src="../images/icoAddFl.gif" border=0 >添加附件</a></td><td> </td></tr>
<%
for(int i=0;i<total;i++){
%>
<tr><td bgcolor="#FFFFFF"><input name="fj<%=i%>" type="file" size="35"></td>
<td> </td>
</tr>
<%
}
%>
</table>
</form>
</body>
附主要代码:
<%
int total=0;
String fj="";
String multi="";
if(request.getParameter("total")!=null&&request.getParameter("total").trim().length()!=0){
total = Integer.parseInt(request.getParameter("total"));
}
if(request.getParameter("multi")!=null){
multi = request.getParameter("multi");
}
//
//
%>
<script language="javascript">
function addfj(){
var totalnum = <%=total%>;
if(totalnum<5)
document.myform.action="attachment.jsp?total=<%= total + 1%>&multi="+myform.fj.value;
document.myform.submit();
}
}
</script>
<body>
<p>注意:至多只能上传5个附件</p>
<hr>
<form name="myform" method="post">
<table class="lowcolor" width="100%" border="0" cellpadding="3" cellspacing="0">
<tr><td>1、点“浏览 ...”按钮,选择你想要粘贴的附件:</td><td> </td></tr>
<tr><td bgcolor="#FFFFFF"><input name="fj" type="file" size="35"></td>
<td> </td>
</tr>
<tr><td>2、选定一个附件后,点击“添加”按钮,将该文件添加到邮件上
<a href="javascript:addfj();"><img src="../images/add.gif" border=0></a></td><td> </td>
</tr>
<tr><td>3.如果需要粘贴一个以上的附件,请重复1、2步骤;</td><td> </td></tr>
<tr><td>4.所有的附件粘贴完后,点击“完成”按钮返回,点击“取消"按钮取消本次操作</td><td> </td></tr>
<tr><td align="center"><a href="javascript:finish();"><img src="../images/finish.gif" border=0></a>
<a href="javascript:window.close();"><img src="../images/cancel.gif"
border=0></a></td><td> </td>
</tr>
</table>
</form>
</body>
if(request.getParameter("multi")!=null){
ArrayList list = new ArrayList();
list.add((String)request.getParameter("multi"));
}
可是把list结果输出来时总是只有当前添加的那个附件,无法在list中保存先前添加的附件,不清楚代码错在哪儿?
to Kenvinlinuu:感谢你的回答,你的意思我也明白,我一开始也是这样写的,
ArrayList list= new ArrayList();
if(request.getParameter("multi")!=null){
list.add((String)request.getParameter("multi"));
session.setAttribute("list",list);
}
把list的声明放在外部,并且每次请求之后将list置入session,然后在另一个页面用session.getAttribute("list"),把list结果输出来时总是只有当前添加的那个附件,你所说的"用时取出,在进行add"这段代码该怎样写,你能大概写一下吗?我这里先谢谢了.
if(null == list)
list = new ArrayList() ;if(request.getParameter("multi")!=null){
list.add((String)request.getParameter("multi"));
session.setAttribute("list",list);
} 现在你应该明白了