java语法探讨问题
其实就是探讨 下列两语句的写法区别:
--------------
语句一:SystemBigSlave slaveBean =new SystemBigSlave() 写在for循环内:
SystemBigSlaveForm BigSlaveform = (SystemBigSlaveForm) form;
List list=new ArrayList();
FormFile[] files=BigSlaveform.getFiles();//取出多个file文件
for(int i=0;i<files.length;i++){
//假设经两个循环,files.length ==2;
SystemBigSlave slaveBean =new SystemBigSlave()
String fileName = files[i].getFileName();//获得文件名信息
slaveBean.setFileName(fileName);
list.add(slaveBean)
}
//循环结束最终将装有持久化类的集合放入BigSlaveform中
BigSlaveform.setList(list);
-------------------------------------------------
语句二:SystemBigSlave slaveBean =new SystemBigSlave() 写在for之前
SystemBigSlaveForm BigSlaveform = (SystemBigSlaveForm) form;
SystemBigSlave slaveBean =new SystemBigSlave()
List list=new ArrayList();
FormFile[] files=BigSlaveform.getFiles();//取出多个file文件
for(int i=0;i<files.length;i++){
//假设经两个循环,files.length ==2;
String fileName = files[i].getFileName();//获得文件名信息
slaveBean.setFileName(fileName);
list.add(slaveBean)
}
//循环结束最终将装有持久化类的集合放入BigSlaveform中
BigSlaveform.setList(list);
--------------------------------------------------
这两个语句在返回的页面中获取slaveBean 时结果不一样。两个语句都能从list获得两个slaveBean ,但结果却不相同。
语句一获得的时两个不同的slaveBean (实际上我也时上传两个不同的文件的,达到我要的效果),但第二个语句确是相同的
slaveBean 。为什么呢?? 能说说原理吗?---------------------------------------------
我在 struts 中的action 类是这样些的:
public ActionForward save(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws
HibernateException {
SystemBigSlaveForm BigSlaveform = (SystemBigSlaveForm) form;
List list=new ArrayList();
FormFile[] files=BigSlaveform.getFiles();//取出多个file文件
for(int i=0;i<files.length;i++){
SystemBigSlave slaveBean =new SystemBigSlave() ; try { //取文件类型
String fileName = files[i].getFileName();//获得文件名信息
slaveBean.setFileName(fileName);
SystemBigSlaveDAO dao = SystemBigSlaveFactoryDAO.getInstance();
dao.savaBigSlave(slaveBean);
saveFile(slaveBean, filePath);
}
}catch (Exception e) {
return null;
} //取文件类型
list.add(slaveBean); //循环把附件持久化类放入list
}
//循环结束
BigSlaveform.setList(list);//将装有持久化类的集合放入BigSlaveform中
request.setAttribute("BigSlaveform",BigSlaveform);
return mapping.findForward("result");
}
----------------------------------------------
result.jsp的部分代码
<table width="75%" border="0" cellspacing="0" cellpadding="0" id="tt" style="display:none;">
<span id="tableBigSlave2">
<tr><td>
<%
List list=BigSlaveform.getList();//取出装有持久化类的集合
for(int i=0;i<list.size();i++){
SystemBigSlave BigSlave=(SystemBigSlave)list.get(i);//实例持久化
String fileName=BigSlave.getFileName();//取得文件类型后缀名
System.out.println("fileName========"+fileName); }%>
// fileName如果上传的是不同的文件,这么却得到同一文件名,为什么呢
</td></tr>
</span>