5 lab я походу все

This commit is contained in:
Павел Сорокин 2023-04-22 12:49:59 +04:00
parent bcac1c3159
commit 7e0c1e988e
9 changed files with 326 additions and 29 deletions

View File

@ -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

View File

@ -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()
{

View File

@ -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";

View File

@ -74,4 +74,5 @@ public class PostDto {
}
public void setUserId(Long id){this.userId=id;}
public void setId(Long id){this.id=id;}
}

View 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>

View File

@ -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}">
Назад

View File

@ -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>

View File

@ -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">

View File

@ -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"