Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
У меня получается добавить и удалять студента из списка. Но почему во время редактирования (допустим поменять ФИО и аватарку) то он ничего не изменяет, в списке сохраняется старое имя и в БД тоже.

Student Service
import java.util.List;
import adil.java.schoolmaven.entity.Student;
import java.io.File;
import java.io.IOException;
import org.springframework.web.multipart.MultipartFile;

public interface StudentService {

	List<Student> getAllStudents();

	Student getStudentById(Long id);

	boolean saveStudent(Student student);

	boolean deleteStudentById(Long id);

	File loadAvatarByFileName(String filename);

	File saveAvatarImage(MultipartFile avatarImage) throws IOException;

        Student updateStudent(String name, String surname, MultipartFile avatar, Student targetStudent) throws IOException;
}


Student Service Impl
@Service
@Transactional
public class StudentServiceImpl implements StudentService {
    
    @Value("${storage.location}")

    private String storageLocation;

    private StudentRepository repository;

    public StudentServiceImpl() {

    }

    @Autowired
    public StudentServiceImpl(StudentRepository repository) {
        super();
        this.repository = repository;
    }

    @Override
    public List<Student> getAllStudents() {
        List<Student> list = new ArrayList<Student>();
        repository.findAll().forEach(e -> list.add(e));
        return list;
    }

    @Override
    public Student getStudentById(Long id) {
        Student student = repository.findById(id).get();
        return student;
    }

    @Override
    public boolean saveStudent(Student student) {
        try {
            repository.save(student);
            return true;
        } catch (Exception ex) {
            return false;
        }
    }

    @Override
    public boolean deleteStudentById(Long id) {
        try {
            repository.deleteById(id);
            return true;
        } catch (Exception ex) {
            return false;
        }

    }

    @Override

    public File loadAvatarByFileName(String filename) {

        return new File(storageLocation + "/" + filename);

    }

    @Override
    

    public File saveAvatarImage(MultipartFile avatarImage) throws IOException {

        File newFile = File.createTempFile(
                avatarImage.getName(),
                "." + avatarImage.getOriginalFilename().split("\\.")[1],
                
                new File(storageLocation));

        avatarImage.transferTo(newFile);

        return newFile;

    }
    
    @Override

    public Student updateStudent(String name, String surname, MultipartFile avatar, Student targetStudent)

           throws IOException {

        if (name != null && !name.equals(targetStudent.getName())) {

            targetStudent.setName(name);

        }

        if (surname != null && !surname.equals(targetStudent.getSurname())) {

            targetStudent.setSurname(surname);

        }

        String oldAvatarName = targetStudent.getAvatar();

        if (oldAvatarName != null) {
            Files.deleteIfExists(Paths.get(storageLocation + File.separator + oldAvatarName));
        }

        File newAvatar = null;
        if (avatar != null) {
            newAvatar = saveAvatarImage(avatar);
            assert newAvatar != null;
            targetStudent.setAvatar(newAvatar.getName());
        }

       boolean isSaved = saveStudent(targetStudent);

        if (!isSaved) {

            throw new IOException();

        }

        Files.deleteIfExists(Paths.get(storageLocation + File.separator + oldAvatarName));

        return targetStudent;

    }


}


Student Controller
package adil.java.schoolmaven.controller;

import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletContext;
import adil.java.schoolmaven.entity.Student;
import adil.java.schoolmaven.service.StudentService;
import java.nio.file.FileSystemException;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class StudentController {

    @Autowired
    private ServletContext servletContext;

    // Constructor based Dependency Injection
    private StudentService studentService;

    public StudentController() {

    }

    @Autowired
    public StudentController(StudentService studentService) {
        this.studentService = studentService;
    }

    @RequestMapping(value = "/allStudents",  method = {RequestMethod.GET, RequestMethod.POST})

    public ModelAndView displayAllUser() {
        System.out.println("User Page Requested : All Students");
        ModelAndView mv = new ModelAndView();
        List<Student> studentList = studentService.getAllStudents();
        mv.addObject("studentList", studentList);
        mv.setViewName("allStudents");
        return mv;
    }



    @RequestMapping(value = "/addStudent", method = RequestMethod.GET)
    public ModelAndView displayNewUserForm() {
        ModelAndView mv = new ModelAndView("addStudent");
        mv.addObject("headerMessage", "Add Student Details");
        mv.addObject("student", new Student());
        return mv;
    }

    @PostMapping(value = "/addStudent")
    public String saveNewStudent(@RequestParam("name") @NonNull String name,
            @RequestParam("surname") @NonNull String surname,
            @RequestParam("avatar") MultipartFile file)
            throws IOException {

        Student student = new Student();
        student.setSurname(surname);
        student.setName(name);

        if (file != null && !file.isEmpty()) {
            student.setAvatar(studentService.saveAvatarImage(file).getName());
        }

        studentService.saveStudent(student);
        return "redirect:/allStudents";
    }

    @GetMapping(value = "/editStudent/{id}")
    public ModelAndView displayEditUserForm(@PathVariable Long id) {
        ModelAndView mv = new ModelAndView("editStudent");
        Student student = studentService.getStudentById(id);
        mv.addObject("headerMessage", "Редактирование студента");
        mv.addObject("student", student);
        return mv;
    }

    @PostMapping(value = "/editStudent")
    public String saveEditedUser(
            @RequestParam("id") Long id,
            @RequestParam("name") String name,
            @RequestParam("surname") String surname,
            @RequestParam("avatar") MultipartFile file) {

        try {

            studentService.updateStudent(name, surname, file, studentService.getStudentById(id));

        } catch (FileSystemException ex) {
            ex.printStackTrace();
        } catch (IOException e) {
            return "redirect:/error";
        }

        return "redirect:/allStudents";
    }

    @GetMapping(value = "/deleteStudent/{id}")
    public ModelAndView deleteUserById(@PathVariable Long id) {
        studentService.deleteStudentById(id);
        ModelAndView mv = new ModelAndView("redirect:/allStudents");

        return mv;

    }

}

Edit Student JSP
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
        
        <title>Home</title>
    </head>
    <body>
     
        <center>
                <h1>${headerMessage}</h1>

                
                <form:form method="POST" action="${pageContext.request.contextPath}/editStudent" enctype="multipart/form-data">
                    <table>
                        <input type="hidden" value="${student.id}" name="id"/>
                        <tr>
                            
                            <td><label path="Name">Name</label></td>
                            <td><input type="text" name="name" value="${student.name}"/></td>
                        </tr>
                        <tr>
                            <td><label path="Surname">Surname</label></td>
                            <td><input name="surname" value="${student.surname}"/></td>
                        </tr>
                        <tr>
                            <td><label path="Avatar">Avatar:</label></td>
                            <td>
                                <img src="${pageContext.request.contextPath}/avatar?avatar=${student.avatar}"
                                     style="max-height: 200px; max-width: 200px;"/>
                            </td>
                            <td>
                                <input type="file" name="avatar"/>
                            </td>
                        </tr>
                        <tr>
                            <td><input class="btn btn-primary" type="submit" value="Save"></td>
                        </tr>
                    </table>
                </form:form>
        </center>
    </body>
</html>
25 июн 19, 07:14    [21914498]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
Nixic
Member

Откуда: Perm
Сообщений: 1871
Покажите StudentRepository, что там в методе save() ?
Какой интерфейс расширяет этот репозиторий?
Сюда вот объект попадает с новыми данными repository.save(student); ?
25 июн 19, 08:31    [21914517]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
Nixic,

Мой Student Repository

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import adil.java.schoolmaven.entity.Student;

@Repository
public interface StudentRepository extends CrudRepository<Student, Long>{
	
}
25 июн 19, 08:39    [21914521]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
fallen2019,

Да все как вы написали
25 июн 19, 08:41    [21914525]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
Nixic,

Из за чего не работает редактирование, вроде все правильно написал же
25 июн 19, 08:43    [21914527]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 3923
Я уже начал скучать :)
Приведи текст фукции saveStudent
А лучше весь класс.
25 июн 19, 09:10    [21914545]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 3923
Сорри... Не увидел
    public boolean saveStudent(Student student) {
        try {
            repository.save(student);
            return true;
        } catch (Exception ex) {
            return false;
        }
    }

А есть ошибка при выполнении?
25 июн 19, 09:15    [21914549]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 3923
Вот на этот класс я бы посмотрел
StudentService
25 июн 19, 09:16    [21914552]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
SQL2008,

Я же добавил StudentService
25 июн 19, 09:20    [21914557]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
SQL2008,

вот мой лог

Hibernate: 
java.nio.file.FileSystemException: C:\Pictures\avatar3469828776750829626.jpg: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.

    select
        student0_.id as id1_0_0_,
        student0_.avatar as avatar2_0_0_,
        student0_.name as name3_0_0_,
        student0_.surname as surname4_0_0_ 
    from
        student student0_ 
    where
        student0_.id=?
	at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
	at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
	at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
	at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
	at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:108)
	at java.nio.file.Files.deleteIfExists(Files.java:1165)
	at adil.java.schoolmaven.service.StudentServiceImpl.updateStudent(StudentServiceImpl.java:122)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:338)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
	at com.sun.proxy.$Proxy960.updateStudent(Unknown Source)
	at adil.java.schoolmaven.controller.StudentController.saveEditedUser(StudentController.java:98)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:870)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:776)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:881)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.sitemesh.webapp.contentfilter.ContentBufferingFilter.bufferAndPostProcess(ContentBufferingFilter.java:169)
	at org.sitemesh.webapp.contentfilter.ContentBufferingFilter.doFilter(ContentBufferingFilter.java:126)
	at org.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:120)
	at org.sitemesh.config.ConfigurableSiteMeshFilter.doFilter(ConfigurableSiteMeshFilter.java:163)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
User Page Requested : All Students
Hibernate: 
    select
        student0_.id as id1_0_,
        student0_.avatar as avatar2_0_,
        student0_.name as name3_0_,
        student0_.surname as surname4_0_ 
    from
        student student0_
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)
25 июн 19, 09:22    [21914559]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
fallen2019,

Вот на страницу заходит нормально, изменяю фио и аватарку и нажимаю сохранить и появлется список студентов но там фио и аватарка старое
25 июн 19, 09:27    [21914563]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
mayton
Member

Откуда: loopback
Сообщений: 41020
File loadAvatarByFileName(String filename);

File saveAvatarImage(MultipartFile avatarImage) throws IOException;


Я-бы предложил заменить это на

byte[] loadAvatarByFileName(String filename);

byte[] saveAvatarImage(MultipartFile avatarImage) throws IOException;


Или InputStream, или byteArrayStream.

Передавать объект файл через границу метода - плохая идея. Это как передать мьютекс.
Сложно будет контролировать факт его неиспользования.

Кроме того. Замечания по коду.

Если мы сохраняем файл то зачем нам возвращать объект ? Здесь должно быть так.
 void saveAvatarImage(MultipartFile avatarImage) throws IOException;


Здесь - что-то слишком много лишних параметров передается.
 Student updateStudent(String name, String surname, MultipartFile avatar, Student targetStudent) throws IOException;

Зачем нужен targetStudent? Если у вас уже в руке есть объект представляющий студента - то зачем вообще сервисный класс?
Ненужная прослойка? Или вы не понимаете инкапсуляцию.
25 июн 19, 09:32    [21914569]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
mayton,
Спасибо за совет

Я же все правильно написал? Больше ничего нигде изменять не надо же:?
public interface StudentService {

	List<Student> getAllStudents();

	Student getStudentById(Long id);

	boolean saveStudent(Student student);

	boolean deleteStudentById(Long id);

	byte[] loadAvatarByFileName(String filename);

         void saveAvatarImage(MultipartFile avatarImage) throws IOException; 

        Student updateStudent(String name, String surname, MultipartFile avatar, Student targetStudent) throws IOException;
}
25 июн 19, 09:39    [21914574]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
fallen2019,

Просто я так понял мне придется поменять код не только в Student Service. Просто я вставил ваш код и в других классах ошибки появились
25 июн 19, 09:41    [21914575]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
mayton
Member

Откуда: loopback
Сообщений: 41020
fallen2019
mayton,
Спасибо за совет

Я же все правильно написал? Больше ничего нигде изменять не надо же:?

Вот хитрый. Хочешь чтоб я подписался?

Вот это что за хреновина?

studentService.updateStudent(name, surname, file, studentService.getStudentById(id));

Зачем updateStudent зависит от самого себя на уровне параметров? Это-же глупо.
25 июн 19, 10:28    [21914612]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
mayton,
из за чего вот такая ошибка
C:\Pictures\avatar3435295369309803118.jpg: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
25 июн 19, 10:38    [21914618]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
mayton
Member

Откуда: loopback
Сообщений: 41020
Я наверное не буду Нострадамусом если скажу что ты сам его блочишь каким-то чудесным образом.
Но я не компилировал и не запускал твой сорс.

Просто выкоси работу с объектом File где можно.
25 июн 19, 10:57    [21914641]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 3923
fallen2019
SQL2008,

Я же добавил StudentService

Увидел...
25 июн 19, 10:59    [21914644]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
fallen2019
Member

Откуда:
Сообщений: 193
SQL2008,
У меня получилось надо было изменить
@GetMapping(value = "/avatar")
    public void getAvatar(HttpServletResponse response, @Param("avatar") String avatar) {
        if (avatar == null || avatar.isEmpty()) {
            return;
        }
        response.setContentType(MediaType.IMAGE_JPEG_VALUE);
        try (FileInputStream input = new FileInputStream(studentService.loadAvatarByFileName(avatar))){
            IOUtils.copy(input, response.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
25 июн 19, 11:58    [21914708]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 3923
Как-то у вас так всегда сложно получается...
В одном проекте у меня тоже загружались файлы аватаров, так я просто сразу создавал поток и писал из него непосредственно в блоб. Почему у вас все так сложно?
Зачем промежуточный файл на диске?
С ними всегда много головной боли.
25 июн 19, 12:23    [21914748]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с редактированием студента  [new]
mayton
Member

Откуда: loopback
Сообщений: 41020
Есть смысл только если положить 1 раз в амазоновское облако. Положить и забыть. Ну и блокировок
там не будет. Тк. нет объекта представляющего файловую систему. Просто http-post или put я не помню точно.
25 июн 19, 12:28    [21914753]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить