azerphoenix
@azerphoenix
Java Software Engineer

Spring — почему возникает исключение ConversionFailedException?

Здравствуйте!
Столкнулся с довольно странной проблемой при работе со Spring.
Использую Spring Boot, Spring Security, Thymeleaf and etc.
Есть форма отображаемая в модалке:

<form id="revisions" th:action="@{'/posts'}" method="post">
    <textarea name="revision" class="form-control" rows="5" id="revision" placeholder="Ваш комментарий ..." required></textarea>
    <button type="submit" th:formaction="@{'/posts/revision/'}" formmethod="post" id="revisionsOwnerAdd" sec:authorize="hasAnyAuthority('ADMIN','OWNER')" class="btn btn-warning float-right">Отправить на доработку</button>
    <button type="submit" th:formaction="@{'/posts/checking/'}" formmethod="post" id="revisionsAuthorAdd" sec:authorize="hasAuthority('AUTHOR')" class="btn btn-warning float-right">Отправить на проверку</button>
</form>


Есть контроллер для обработки запроса:
@PreAuthorize("hasAuthority('AUTHOR')")
@PostMapping(value = "/checking/{id}")
public String checkingPost(
        @PathVariable(value = "id") Long id,
        // Проблема наблюдается здесь с RequestParam String Revision
        @RequestParam("revision") String revision,
        Revision revisionNew
){

    Optional<Post> post = postService.getPost(id);
    if(post.isPresent()){
        post.orElse(null).setPostStatus(PostStatus.CHECKING);

        revisionNew.setRevContent(revision);
        revisionNew.setRevCreationDate(LocalDate.now());
        revisionNew.setPost(post.orElse(null));
        revisionService.addRevision(revisionNew);

    }

    postService.updatePost(id, post.orElse(null));

    return "redirect:/posts?checking";
}


При отправке формы получаю исключение:
Failed to convert value of type 'java.lang.String' to required type 'info.md7.wpat.models.Revision'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Long] for value 'sfdfsf'; nested exception is java.lang.NumberFormatException: For input string: "sfdfsf"


Вот, параметры POST запроса:
5c0c09598e4e3716135379.jpeg
Revision Entity
@Entity @Data
public class Revision {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long revId;

    @Lob
    @Column( length = 5000 )
    private String revContent;

    private LocalDate revCreationDate;

    // Constructor
    private Revision(){}

    @ManyToOne
    @JoinColumn(name = "postId")
    private Post post;
}



Почему он пытается тип String конвертировать в Long ? Все остальные формы сайта работают.
  • Вопрос задан
  • 2187 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Автор вопроса, куратор тега Java
Java Software Engineer
Решение оказалось довольно простым:
- Нужно было убрать Revision revisionNew
- в теле метода создать новую ревизию и сохранить

Revision revisionNew = new Revision(revision);
revisionService.addRevision(revisionNew);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы