5 lab я походу все
This commit is contained in:
parent
bcac1c3159
commit
7e0c1e988e
205
data.trace.db
205
data.trace.db
@ -245,3 +245,208 @@ Wrong user name or password [28000-210]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:529)
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:496)
|
||||
... 53 more
|
||||
2023-04-22 11:20:00 jdbc[13]: exception
|
||||
org.h2.jdbc.JdbcSQLDataException: Невозможно преобразование строки в тип "TIMESTAMP"
|
||||
Cannot parse "TIMESTAMP" constant ; SQL statement:
|
||||
INSERT INTO "PUBLIC"."COMMENT"("ID","DATE_OF_ADD","TEXT","POST_ID","USER_ID")VALUES(?,?,?,?,?) [22007-210]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:525)
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:496)
|
||||
at org.h2.message.DbException.get(DbException.java:216)
|
||||
at org.h2.value.ValueTimestamp.parse(ValueTimestamp.java:88)
|
||||
at org.h2.value.Value.convertToTimestamp(Value.java:1980)
|
||||
at org.h2.value.Value.convertTo(Value.java:1153)
|
||||
at org.h2.value.Value.convertForAssignTo(Value.java:1092)
|
||||
at org.h2.table.Column.validateConvertUpdateSequence(Column.java:369)
|
||||
at org.h2.table.Table.convertInsertRow(Table.java:931)
|
||||
at org.h2.command.dml.Insert.insertRows(Insert.java:167)
|
||||
at org.h2.command.dml.Insert.update(Insert.java:135)
|
||||
at org.h2.command.dml.DataChangeStatement.update(DataChangeStatement.java:61)
|
||||
at org.h2.command.CommandContainer.update(CommandContainer.java:174)
|
||||
at org.h2.command.Command.executeUpdate(Command.java:252)
|
||||
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:209)
|
||||
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:169)
|
||||
at org.h2.result.UpdatableRow.insertRow(UpdatableRow.java:334)
|
||||
at org.h2.jdbc.JdbcResultSet.insertRow(JdbcResultSet.java:3335)
|
||||
at org.h2.server.web.WebApp.editResult(WebApp.java:1159)
|
||||
at org.h2.server.web.WebApp.process(WebApp.java:250)
|
||||
at org.h2.server.web.WebApp.processRequest(WebApp.java:176)
|
||||
at org.h2.server.web.JakartaWebServlet.doGet(JakartaWebServlet.java:129)
|
||||
at org.h2.server.web.JakartaWebServlet.doPost(JakartaWebServlet.java:166)
|
||||
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:731)
|
||||
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:66)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119)
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400)
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859)
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734)
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
|
||||
at java.base/java.lang.Thread.run(Thread.java:833)
|
||||
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
|
||||
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
|
||||
at java.base/java.lang.String.charAt(String.java:1513)
|
||||
at org.h2.util.DateTimeUtils.parseDateValue(DateTimeUtils.java:166)
|
||||
at org.h2.util.DateTimeUtils.parseTimestamp(DateTimeUtils.java:338)
|
||||
at org.h2.value.ValueTimestamp.parse(ValueTimestamp.java:86)
|
||||
... 57 more
|
||||
2023-04-22 11:20:00 jdbc[13]: exception
|
||||
org.h2.jdbc.JdbcSQLDataException: Невозможно преобразование строки в тип "TIMESTAMP"
|
||||
Cannot parse "TIMESTAMP" constant ; SQL statement:
|
||||
INSERT INTO "PUBLIC"."COMMENT"("ID","DATE_OF_ADD","TEXT","POST_ID","USER_ID")VALUES(?,?,?,?,?) [22007-210]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:525)
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:496)
|
||||
at org.h2.message.DbException.get(DbException.java:216)
|
||||
at org.h2.value.ValueTimestamp.parse(ValueTimestamp.java:88)
|
||||
at org.h2.value.Value.convertToTimestamp(Value.java:1980)
|
||||
at org.h2.value.Value.convertTo(Value.java:1153)
|
||||
at org.h2.value.Value.convertForAssignTo(Value.java:1092)
|
||||
at org.h2.table.Column.validateConvertUpdateSequence(Column.java:369)
|
||||
at org.h2.table.Table.convertInsertRow(Table.java:931)
|
||||
at org.h2.command.dml.Insert.insertRows(Insert.java:167)
|
||||
at org.h2.command.dml.Insert.update(Insert.java:135)
|
||||
at org.h2.command.dml.DataChangeStatement.update(DataChangeStatement.java:61)
|
||||
at org.h2.command.CommandContainer.update(CommandContainer.java:174)
|
||||
at org.h2.command.Command.executeUpdate(Command.java:252)
|
||||
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:209)
|
||||
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:169)
|
||||
at org.h2.result.UpdatableRow.insertRow(UpdatableRow.java:334)
|
||||
at org.h2.jdbc.JdbcResultSet.insertRow(JdbcResultSet.java:3335)
|
||||
at org.h2.server.web.WebApp.editResult(WebApp.java:1159)
|
||||
at org.h2.server.web.WebApp.process(WebApp.java:250)
|
||||
at org.h2.server.web.WebApp.processRequest(WebApp.java:176)
|
||||
at org.h2.server.web.JakartaWebServlet.doGet(JakartaWebServlet.java:129)
|
||||
at org.h2.server.web.JakartaWebServlet.doPost(JakartaWebServlet.java:166)
|
||||
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:731)
|
||||
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:66)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119)
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400)
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859)
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734)
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
|
||||
at java.base/java.lang.Thread.run(Thread.java:833)
|
||||
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
|
||||
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
|
||||
at java.base/java.lang.String.charAt(String.java:1513)
|
||||
at org.h2.util.DateTimeUtils.parseDateValue(DateTimeUtils.java:166)
|
||||
at org.h2.util.DateTimeUtils.parseTimestamp(DateTimeUtils.java:338)
|
||||
at org.h2.value.ValueTimestamp.parse(ValueTimestamp.java:86)
|
||||
... 57 more
|
||||
2023-04-22 12:15:44 database: wrong user or password; user: "SA"
|
||||
org.h2.message.DbException: Неверное имя пользователя или пароль
|
||||
Wrong user name or password [28000-210]
|
||||
at org.h2.message.DbException.get(DbException.java:227)
|
||||
at org.h2.message.DbException.get(DbException.java:203)
|
||||
at org.h2.message.DbException.get(DbException.java:192)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:154)
|
||||
at org.h2.engine.Engine.openSession(Engine.java:222)
|
||||
at org.h2.engine.Engine.createSession(Engine.java:201)
|
||||
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:338)
|
||||
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122)
|
||||
at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:288)
|
||||
at org.h2.server.web.WebServer.getConnection(WebServer.java:807)
|
||||
at org.h2.server.web.WebApp.login(WebApp.java:1033)
|
||||
at org.h2.server.web.WebApp.process(WebApp.java:226)
|
||||
at org.h2.server.web.WebApp.processRequest(WebApp.java:176)
|
||||
at org.h2.server.web.JakartaWebServlet.doGet(JakartaWebServlet.java:129)
|
||||
at org.h2.server.web.JakartaWebServlet.doPost(JakartaWebServlet.java:166)
|
||||
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:731)
|
||||
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:66)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185)
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158)
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119)
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400)
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859)
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734)
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
|
||||
at java.base/java.lang.Thread.run(Thread.java:833)
|
||||
Caused by: org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Неверное имя пользователя или пароль
|
||||
Wrong user name or password [28000-210]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:529)
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:496)
|
||||
... 53 more
|
||||
|
@ -13,7 +13,7 @@ public class CommentDto {
|
||||
this.id= comment.getId();
|
||||
this.Text=comment.getText();
|
||||
this.userName=comment.getUser().getFirstName() + " " + comment.getUser().getLastName();
|
||||
postId=comment.getPost().getId();
|
||||
this.postId=comment.getPost().getId();
|
||||
}
|
||||
public Long getId()
|
||||
{
|
||||
|
@ -1,10 +1,13 @@
|
||||
package ru.ulstu.is.sbapp.Post.controller;
|
||||
|
||||
import jakarta.servlet.ServletRegistration;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import ru.ulstu.is.sbapp.Comment.model.CommentDto;
|
||||
import ru.ulstu.is.sbapp.Comment.service.CommentService;
|
||||
import ru.ulstu.is.sbapp.Post.model.PostDto;
|
||||
@ -12,6 +15,10 @@ import ru.ulstu.is.sbapp.Post.service.PostService;
|
||||
import ru.ulstu.is.sbapp.User.model.UserDto;
|
||||
import ru.ulstu.is.sbapp.User.service.UserService;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Base64;
|
||||
import java.util.Optional;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/post")
|
||||
public class PostMvcController {
|
||||
@ -51,14 +58,28 @@ public class PostMvcController {
|
||||
.toList());
|
||||
return "post";
|
||||
}
|
||||
|
||||
@GetMapping(value = {"/add/{userId}", "/edit/{id}"})
|
||||
@GetMapping("/filter")
|
||||
public String getFileteredPosts(@RequestParam(value = "searchValue") String searchValue,Model model)
|
||||
{
|
||||
model.addAttribute("posts",
|
||||
postService.getPostsAndComments(searchValue).stream()
|
||||
.map(PostDto::new)
|
||||
.toList());
|
||||
model.addAttribute("users",
|
||||
userService.findAllUsers().stream()
|
||||
.map(UserDto::new)
|
||||
.toList());
|
||||
return "post";
|
||||
}
|
||||
@GetMapping(value = {"/edit", "/edit/{id}"})
|
||||
public String editPost(@PathVariable(required = false) Long id,
|
||||
@PathVariable(required = false) Long userId,
|
||||
Model model) {
|
||||
if (id == null || id <= 0) {
|
||||
model.addAttribute("userId",userId);
|
||||
model.addAttribute("postDto", new PostDto());
|
||||
model.addAttribute("users",
|
||||
userService.findAllUsers().stream()
|
||||
.map(UserDto::new)
|
||||
.toList());
|
||||
return "post-create";
|
||||
} else {
|
||||
model.addAttribute("postId", id);
|
||||
@ -68,19 +89,22 @@ public class PostMvcController {
|
||||
|
||||
}
|
||||
|
||||
@PostMapping(value = {"user/{userId}", "/{id}"})
|
||||
@PostMapping(value = {"/user/", "/{id}"})
|
||||
public String savePost(@PathVariable(required = false) Long id,
|
||||
@PathVariable(required = false) Long userId,
|
||||
@RequestParam(value = "userId",required = false) Long userId,
|
||||
@RequestParam(value = "multipartFile") MultipartFile multipartFile,
|
||||
@ModelAttribute @Valid PostDto postDto,
|
||||
BindingResult bindingResult,
|
||||
Model model) {
|
||||
Model model) throws IOException {
|
||||
if (bindingResult.hasErrors()) {
|
||||
model.addAttribute("errors", bindingResult.getAllErrors());
|
||||
return "post-edit";
|
||||
}
|
||||
if (id == null || id <= 0 && userId!=null) {
|
||||
postDto.setImage("data:" + multipartFile.getContentType() + ";base64," + Base64.getEncoder().encodeToString(multipartFile.getBytes()));
|
||||
userService.addNewPost(userId,postDto);
|
||||
} else {
|
||||
postDto.setImage("data:" + multipartFile.getContentType() + ";base64," + Base64.getEncoder().encodeToString(multipartFile.getBytes()));
|
||||
postService.updatePost(id, postDto);
|
||||
}
|
||||
return "redirect:/post";
|
||||
@ -99,16 +123,18 @@ public class PostMvcController {
|
||||
return "redirect:/post/{postId}";
|
||||
}
|
||||
|
||||
@GetMapping(value = {"/add/{postId}/{userId}", "/editComment/{id}"})
|
||||
@GetMapping(value = {"/addComment/{postId}", "/editComment/{id}"})
|
||||
public String editComment(@PathVariable(required = false) Long id,
|
||||
@PathVariable(required = false) Long postId,
|
||||
@PathVariable(required = false) Long userId,
|
||||
Model model) {
|
||||
if (id == null || id <= 0) {
|
||||
model.addAttribute("postId", postId);
|
||||
model.addAttribute("userId",userId);
|
||||
model.addAttribute("CommentDto", new CommentDto(commentService.findComment(id)));
|
||||
return "comment-create";
|
||||
model.addAttribute("users",
|
||||
userService.findAllUsers().stream()
|
||||
.map(UserDto::new)
|
||||
.toList());
|
||||
model.addAttribute("commentDto", new CommentDto());
|
||||
return "comment-create.html";
|
||||
} else {
|
||||
model.addAttribute("id", id);
|
||||
model.addAttribute("commentDto", new CommentDto(commentService.findComment(id)));
|
||||
@ -116,21 +142,21 @@ public class PostMvcController {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@PostMapping(value = {"/{postId}/{userId}", "/comment/{id}"})
|
||||
@PostMapping(value = {"/comment/{postId}/user", "/comment/{id}"})
|
||||
public String saveComment(@PathVariable(required = false) Long id,
|
||||
@PathVariable(required = false) Long userId,
|
||||
@RequestParam(value = "userId",required = false) Long userId,
|
||||
@PathVariable(required = false) Long postId,
|
||||
@ModelAttribute @Valid CommentDto commentDto,
|
||||
BindingResult bindingResult,
|
||||
Model model) {
|
||||
Model model,
|
||||
HttpServletRequest request) {
|
||||
if (bindingResult.hasErrors()) {
|
||||
model.addAttribute("errors", bindingResult.getAllErrors());
|
||||
return "comment-edit";
|
||||
}
|
||||
if (id == null || id <= 0 && userId!=null) {
|
||||
postService.addCommentToPost(id,userId,commentDto.getText());
|
||||
return "redirect:/post-page/{postId}";
|
||||
postService.addCommentToPost(postId,userId,commentDto.getText());
|
||||
return "redirect:/post/"+ postId;
|
||||
} else {
|
||||
commentService.updateComment(id, commentDto.getText());
|
||||
return "redirect:/post";
|
||||
|
@ -74,4 +74,5 @@ public class PostDto {
|
||||
}
|
||||
public void setUserId(Long id){this.userId=id;}
|
||||
|
||||
public void setId(Long id){this.id=id;}
|
||||
}
|
||||
|
35
src/main/resources/templates/comment-create.html
Normal file
35
src/main/resources/templates/comment-create.html
Normal file
@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en"
|
||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||
layout:decorate="~{default}" xmlns:th="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<div layout:fragment="content">
|
||||
<div class="mx-auto my-3">
|
||||
<div th:text="${errors}" class="margin-bottom alert-danger"></div>
|
||||
<form action="#" th:action="@{'/post/comment/' + ${postId} + '/user'}" th:object="${commentDto}" method="post">
|
||||
<div class="mb-3 my-2">
|
||||
<label for="selectBox" class="form-label">Пользователь</label>
|
||||
<select th:name="userId" id="selectBox" class="form-select">
|
||||
<option th:each="value: ${users}" th:selected="${selectBox} == ${value}" th:value="${value.id}">
|
||||
<span th:text="${value.firstName}"></span>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<div>
|
||||
<input class="form-control" id="commentText" th:field="${commentDto.text}" type="text" defaultValue="" required/>
|
||||
</div>
|
||||
<div>
|
||||
<button type="submit" class="btn btn-primary button-fixed">
|
||||
Добавить
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -7,10 +7,18 @@
|
||||
<body>
|
||||
<div layout:fragment="content">
|
||||
<div th:text="${errors}" class="margin-bottom alert-danger"></div>
|
||||
<form action="#" th:action="@{/post/user/{userId}(userId=${userId})}" th:object="${postDto}" method="post">
|
||||
<form action="#" th:action="@{/post/user/}" th:object="${postDto}" method="post" enctype="multipart/form-data">
|
||||
<div class="mb-3 my-2">
|
||||
<label for="selectBox" class="form-label">Пользователь</label>
|
||||
<select th:name="userId" id="selectBox" class="form-select">
|
||||
<option th:each="value: ${users}" th:selected="${selectBox} == ${value}" th:value="${value.id}">
|
||||
<span th:text="${value.firstName}"></span>
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="image" class="form-label">Картинка</label>
|
||||
<input type="file" class="form-control" id="image" th:field="${postDto.image}" required="true">
|
||||
<input type="file" th:name="multipartFile" class="form-control" id="image" required="true">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="heading" class="form-label">Заголовок</label>
|
||||
@ -22,7 +30,7 @@
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<button type="submit" class="btn btn-primary button-fixed">
|
||||
<span th:if="${userId != null}">Добавить</span>
|
||||
<span>Добавить</span>
|
||||
</button>
|
||||
<a class="btn btn-secondary button-fixed" th:href="@{/post}">
|
||||
Назад
|
||||
|
@ -7,10 +7,10 @@
|
||||
<body>
|
||||
<div layout:fragment="content">
|
||||
<div th:text="${errors}" class="margin-bottom alert-danger"></div>
|
||||
<form action="#" th:action="@{/post/{id}(id=${id})}" th:object="${postDto}" method="post">
|
||||
<form action="#" th:action="@{/post/{id}(id=${id})}" th:object="${postDto}" method="post" enctype="multipart/form-data">
|
||||
<div class="mb-3">
|
||||
<label for="image" class="form-label">Картинка</label>
|
||||
<input type="file" class="form-control" id="image" th:field="${postDto.image}" required="true">
|
||||
<input type="file" th:name="multipartFile" class="form-control" id="image" required="true">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="heading" class="form-label">Заголовок</label>
|
||||
|
@ -8,14 +8,15 @@
|
||||
|
||||
<div layout:fragment="content">
|
||||
<div class="da d-flex my-2">
|
||||
<div><img class="imga img-fluid float-start mx-2" style="width:500px;height:300px" src=${post.image}/></div>
|
||||
<div><img class="imga img-fluid float-start mx-2" style="width:500px;height:300px" th:src="${post.image}"/></div>
|
||||
<div class="container-fluid my-2 mx-1">
|
||||
<h1 th:text="${post.heading}"></h1>
|
||||
<p>[[${post.content}]]</p>
|
||||
</div>
|
||||
</div>
|
||||
<!--Вот тут кнопка для добавления комментариев (для будущего тебя)-->
|
||||
<a class="btn btn-outline-primary text-center mx-2">
|
||||
<a class="btn btn-outline-primary text-center mx-2"
|
||||
th:href="@{/post/addComment/{postId}(postId=${post.id})}">
|
||||
+
|
||||
</a>
|
||||
<div className="d-flex mx-2">
|
||||
|
@ -8,7 +8,12 @@
|
||||
|
||||
<div layout:fragment="content">
|
||||
<div class="d-flex float-start my-1">
|
||||
<div class="mx-3"><input type="text" id="search" class="form-control" required /></div>
|
||||
<form th:action="@{/post/filter}" class="d-flex">
|
||||
<div class="mx-3"><input type="text" th:name="searchValue" id="search" class="form-control" required /></div>
|
||||
<button type="submit" class="btn btn-outline-primary text-center mx-2">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
</button>
|
||||
</form>
|
||||
<div class="mx-3">
|
||||
<select id="selectBox">
|
||||
<option th:each="value: ${users}" th:selected="${selectBox} == ${value}">
|
||||
@ -18,7 +23,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<a class="btn btn-outline-primary text-center mx-2"
|
||||
th:href="@{/post/add/{userId}(userId=${6352})}">
|
||||
th:href="@{/post/edit}">
|
||||
<!--Сам понимаешь что здесь надо сделать-->
|
||||
+
|
||||
</a>
|
||||
@ -39,7 +44,23 @@
|
||||
<p th:text="${post.content}"></p>
|
||||
</div>
|
||||
<div class="flex-grow-1 mx-2">
|
||||
<table class="table"></table>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Пользователь</th>
|
||||
<th scope="col">Текст</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="comment, iterator: ${post.comments}">
|
||||
<th scope="row" th:text="${iterator.index} + 1"/>
|
||||
<td th:text="${comment.user}" style="width: 60%"/>
|
||||
<td th:text="${comment.text}" style="width: 60%"/>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="d-flex flex-row justify-content-end ">
|
||||
<a class="btn btn-outline-primary text-center mx-2"
|
||||
|
Loading…
x
Reference in New Issue
Block a user