【问题标题】:No validator could be found for type: java.lang.Long. with post ID [closed]找不到类型的验证器:java.lang.Long。带有帖子ID [关闭]
【发布时间】:2015-03-24 04:23:33
【问题描述】:

我的程序有什么问题?我得到错误

HTTP Status 500 - Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.Long.

而且不知道如何解决...在堆栈跟踪上,我编写的唯一类是

myapp.spring.controllers.PostFormController.processForm(PostFormController.java:66)

而这一行是

validator.validate(p, result);

Post.java

// imports

@Entity
@Table(name="posts")
public class Post implements Serializable
{
        /* **********************************
         * ------------ fields ------------ *
         ************************************/
        /**
         *
         */
        private static final long serialVersionUID = 1L;

        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private long id;

        @Past
        @Column(name="date")
        private Date date;

        @NotBlank
        @Size(min=3, max=20)
        @Column(name="author")
        private String author;

        @NotBlank
        @Column(name="content")
        private String content;

        @NotBlank
        @Column(name="topic")
        private String topic;

        @NotBlank
        @Column(name="thread_id")
        private long thread_id;

        @ManyToOne
        @JoinColumn(name="name")
        @Valid
        private PostType type;



        /* ***************************************
         * ---------- getters setters ---------- *
         *****************************************/
       // cut // 

}

blah blah blah 无法添加,因为帖子中的代码太多:S

【问题讨论】:

  • p 是 Long,对吗?您期望 Long 变量的验证做什么?错误信息中有什么你不明白的地方?
  • p 是来自 http 方法 POST public String processForm(Model model, @ModelAttribute("post") Post p, BindingResult result)Post 类型
  • 给我们看Post的代码
  • 您的问题没有提供足够的信息让我们理解和帮助解决您的问题。带有 Spring 配置文件的完整代码示例会很有帮助。如果代码太长,尽量去掉不影响问题的部分。

标签: java spring hibernate jsp validation


【解决方案1】:

问题可能是这一行:

@NotBlank
@Column(name="thread_id")
private long thread_id;

NotBlank 对 long 类型的字段没有意义。 long 不能为空或不为空。只有字符串可以。因此错误消息:

javax.validation.UnexpectedTypeException:HV000030:找不到类型的验证器:java.lang.Long

【讨论】:

  • 我添加了NotBlank,因为我认为缺少这个会导致这个问题。忘记删了,不好意思。问题在于long。我已更改为Long,现在它可以正常工作了:D 谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 2015-01-02
  • 2016-04-16
  • 1970-01-01
相关资源
最近更新 更多