spring/thymeleaf-无法将“java.lang.string”类型的值转换为所需类型

ssm49v7z  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(730)

我对Spring和百里香是新来的,我不知道这里出了什么问题。提交表格时,我得到 THIS 错误: There was an unexpected error (type=Bad Request, status=400). Failed to convert value of type 'java.lang.String' to required type 'br.com.teste.segware.domain.post.Post'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Integer] for value 'Some text...'; nested exception is java.lang.NumberFormatException: For input string: "Sometext..." org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'br.com.teste.segware.domain.post.Post'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Integer] for value 'Some text...'; nested exception is java.lang.NumberFormatException: For input string: "Sometext..." 这是我的 Post 类:(我使用lombok,所以getter和setter是自生成的)

@Getter
@Setter
@Entity
@Table(name = "post")
public class Post implements Serializable {

    @EqualsAndHashCode.Include
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private Integer id;

    @NotBlank
    @Column(nullable = false)
    private String nome;

    @NotBlank
    @Size(max = 800)
    @Column(nullable = false)
    private String post;
}

我的控制器:

@Controller
public class IndexController {

    @Autowired
    private PostService postService;

    @PostMapping("/savePost")
    String savePost(@ModelAttribute("post") Post post) {
        postService.savePost(post);

        return "redirect:/";
   }
}

以及我的html表单:

<form method="post" th:object="${post}" th:action="@{/savePost}">
            <fieldset>
                <input type="hidden" th:field="*{id}" />

                <label for="name">Nome:</label> <br/>
                <input type="text" id="name" name="name" th:field="*{nome}" placeholder="Nome..." /> <br/><br/>

                <label for="post">O que você gostaria de dizer?</label> <br/>
                <textarea id="post" name="post" th:field="*{post}" ></textarea> <br/><br/>
                <input type="submit" value="Postar" />
            </fieldset>
</form>

为什么这东西要把 <textarea>String 到某个数字 NumberFormat 什么东西?
这个 Entity 命名 Post 清楚地表明了这个领域 post 作为一个 String . 那么,为什么spring在提交时会认为它是某种数字呢?显然,当我输入一些数字时 textarea ,保存到数据库中。但我需要 String 要保存。。。
有人请你开导我。
提前谢谢!
编辑
这里是存储库和服务类,只是为了确保。
服务。。。

@Service
public class PostService {

    @Autowired
    private PostRepository postRepository;

    public void savePost(Post post) {
        postRepository.save(post);
    }
}

回购。。。

public interface PostRepository extends JpaRepository<Post, Integer> {

}
t2a7ltrp

t2a7ltrp1#

似乎存在名称冲突,因为对象名和变量名都是相同的(在您的示例中是post)。
或者将entity类中的列名更改为非post,然后在html中更改。或者,将控制器和html中的backing对象名更改为post以外的内容。两个都为我工作。

相关问题