关于PaintingService中的update()方法的疑问
public void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//实现文件上传的三个步骤
//第一步:初始化FlieUpload组件
FileItemFactory factory=new DiskFileItemFactory();//FileItemFactory用于将前端传入的表单项转化为一个个FileItem对象
ServletFileUpload sf=new ServletFileUpload(factory);//ServletFileUpload则是为FileUpload提供java web的http请求解析
//循环FileItem对象
try {
List<FileItem> formData=sf.parseRequest(request);
Painting painting=new Painting();
int isPM=0;
for(FileItem fi:formData) {
if(fi.isFormField()) {
//普通输入项
switch(fi.getFieldName()) {
case "pname":
painting.setPname(fi.getString("UTF-8"));
break;
case "category":
painting.setCategory(Integer.parseInt(fi.getString("UTF-8")));
break;
case "price":
painting.setPrice(Integer.parseInt(fi.getString("UTF-8")));
break;
case "description":
painting.setDescription(fi.getString("UTF-8"));
break;
case "id":
painting.setId(Integer.parseInt(fi.getString("UTF-8")));
break;
case "isPreviewModified":
isPM=Integer.parseInt(fi.getString("UTF-8"));
break;
default:
break;
}
}
else {
//文件上传项
if(isPM==0) {
painting.setPreview(fi.getString());
}
else {
//获得文件保存到服务器的路径
String path=request.getServletContext().getRealPath("/upload");
//获得随机文件名
String fileName=UUID.randomUUID().toString();
String suffix=fi.getName().substring(fi.getName().lastIndexOf("."));
try {
fi.write(new File(path,fileName+suffix));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
painting.setPreview("/upload/"+fileName+suffix);
}
}
}
paintingService.update(painting);
request.getRequestDispatcher("management?method=list");
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
问题是:在ManagementController中的update方法中,已经实例化了一个Painting对象,并通过循环的方式将表单的输入项的内容设置为该Painting对象的属性赋值(并且其Id值是未发生变化的),所以我们最后调用PaintingService中的update()方法时,只将这个实例化的Painting对象painting作为参数传入,后面的PaintingDao和XmlDataSource中的update()方法都以painting对象作为参数为什么不可行呢?请老师解答下。
正在回答 回答被采纳积分+1
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 9400 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星