Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с редактированием студента / 21 сообщений из 21, страница 1 из 1
25.06.2019, 07:14
    #39830121
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
У меня получается добавить и удалять студента из списка. Но почему во время редактирования (допустим поменять ФИО и аватарку) то он ничего не изменяет, в списке сохраняется старое имя и в БД тоже.

Student Service
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
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
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
@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
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
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
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
<%@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>
...
Рейтинг: 0 / 0
25.06.2019, 08:31
    #39830132
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Покажите StudentRepository, что там в методе save() ?
Какой интерфейс расширяет этот репозиторий?
Сюда вот объект попадает с новыми данными repository.save(student); ?
...
Рейтинг: 0 / 0
25.06.2019, 08:39
    #39830134
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Nixic,

Мой Student Repository

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
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>{
	
}
...
Рейтинг: 0 / 0
25.06.2019, 08:41
    #39830135
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
fallen2019,

Да все как вы написали
...
Рейтинг: 0 / 0
25.06.2019, 08:43
    #39830137
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Nixic,

Из за чего не работает редактирование, вроде все правильно написал же
...
Рейтинг: 0 / 0
25.06.2019, 09:10
    #39830152
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Я уже начал скучать :)
Приведи текст фукции saveStudent
А лучше весь класс.
...
Рейтинг: 0 / 0
25.06.2019, 09:15
    #39830155
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Сорри... Не увидел
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    public boolean saveStudent(Student student) {
        try {
            repository.save(student);
            return true;
        } catch (Exception ex) {
            return false;
        }
    }


А есть ошибка при выполнении?
...
Рейтинг: 0 / 0
25.06.2019, 09:16
    #39830157
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Вот на этот класс я бы посмотрел
StudentService
...
Рейтинг: 0 / 0
25.06.2019, 09:20
    #39830160
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
SQL2008,

Я же добавил StudentService
...
Рейтинг: 0 / 0
25.06.2019, 09:22
    #39830162
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
SQL2008,

вот мой лог

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
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)
...
Рейтинг: 0 / 0
25.06.2019, 09:27
    #39830165
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
fallen2019,

Вот на страницу заходит нормально, изменяю фио и аватарку и нажимаю сохранить и появлется список студентов но там фио и аватарка старое
...
Рейтинг: 0 / 0
25.06.2019, 09:32
    #39830170
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Код: java
1.
2.
3.
File loadAvatarByFileName(String filename);

File saveAvatarImage(MultipartFile avatarImage) throws IOException;



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

Код: java
1.
2.
3.
byte[] loadAvatarByFileName(String filename);

byte[] saveAvatarImage(MultipartFile avatarImage) throws IOException;



Или InputStream, или byteArrayStream.

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

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

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



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


Зачем нужен targetStudent? Если у вас уже в руке есть объект представляющий студента - то зачем вообще сервисный класс?
Ненужная прослойка? Или вы не понимаете инкапсуляцию.
...
Рейтинг: 0 / 0
25.06.2019, 09:39
    #39830173
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
mayton,
Спасибо за совет

Я же все правильно написал? Больше ничего нигде изменять не надо же:?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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;
}
...
Рейтинг: 0 / 0
25.06.2019, 09:41
    #39830174
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
fallen2019,

Просто я так понял мне придется поменять код не только в Student Service. Просто я вставил ваш код и в других классах ошибки появились
...
Рейтинг: 0 / 0
25.06.2019, 10:28
    #39830201
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
fallen2019mayton,
Спасибо за совет

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

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

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

Код: java
1.
studentService.updateStudent(name, surname, file, studentService.getStudentById(id));


Зачем updateStudent зависит от самого себя на уровне параметров? Это-же глупо.
...
Рейтинг: 0 / 0
25.06.2019, 10:38
    #39830206
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
mayton,
из за чего вот такая ошибка
Код: java
1.
C:\Pictures\avatar3435295369309803118.jpg: Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
...
Рейтинг: 0 / 0
25.06.2019, 10:57
    #39830225
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Я наверное не буду Нострадамусом если скажу что ты сам его блочишь каким-то чудесным образом.
Но я не компилировал и не запускал твой сорс.

Просто выкоси работу с объектом File где можно.
...
Рейтинг: 0 / 0
25.06.2019, 10:59
    #39830228
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
fallen2019SQL2008,

Я же добавил StudentService
Увидел...
...
Рейтинг: 0 / 0
25.06.2019, 11:58
    #39830266
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
SQL2008,
У меня получилось надо было изменить
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@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();
        }
    }
...
Рейтинг: 0 / 0
25.06.2019, 12:23
    #39830286
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Как-то у вас так всегда сложно получается...
В одном проекте у меня тоже загружались файлы аватаров, так я просто сразу создавал поток и писал из него непосредственно в блоб. Почему у вас все так сложно?
Зачем промежуточный файл на диске?
С ними всегда много головной боли.
...
Рейтинг: 0 / 0
25.06.2019, 12:28
    #39830290
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с редактированием студента
Есть смысл только если положить 1 раз в амазоновское облако. Положить и забыть. Ну и блокировок
там не будет. Тк. нет объекта представляющего файловую систему. Просто http-post или put я не помню точно.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с редактированием студента / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]