我对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> {
}
1条答案
按热度按时间t2a7ltrp1#
似乎存在名称冲突,因为对象名和变量名都是相同的(在您的示例中是post)。
或者将entity类中的列名更改为非post,然后在html中更改。或者,将控制器和html中的backing对象名更改为post以外的内容。两个都为我工作。