关于PaintingService中的update()方法的疑问

关于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();

}

}

http://img1.sycdn.imooc.com//climg/5f4a7b3709b2309d06440202.jpg

问题是:在ManagementController中的update方法中,已经实例化了一个Painting对象,并通过循环的方式将表单的输入项的内容设置为该Painting对象的属性赋值(并且其Id值是未发生变化的),所以我们最后调用PaintingService中的update()方法时,只将这个实例化的Painting对象painting作为参数传入,后面的PaintingDao和XmlDataSource中的update()方法都以painting对象作为参数为什么不可行呢?请老师解答下。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2020-08-30 10:58:53

同学你好, 同学可在update()方法前输出painting对象的属性,查看是否有成功赋值。

注:如果还存在问题,建议同学反馈其他相关代码,与错误信息,便于老师定位问题。

祝学习愉快!

  • case "id": painting.setId(Integer.parseInt(fi.getString("UTF-8"))); break; 在switch结构中为painting设置了id值的,老师。
    2020-08-30 13:33:49
  • 同学你好,非常抱歉,刚是老师的理解错误,已修改问答,同学可以重新查看一下。祝学习愉快!
    2020-08-30 14:56:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师