日期:2014-05-20  浏览次数:20711 次

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>