1

在我的 Spring 3.0.5 Web MVC 应用程序中,我定义了一个模型类,其属性用@SafeHtml 注释。当 Spring 尝试验证这个模型对象时,它会出现以下情况:

HTTP ERROR: 500

org.jsoup.Jsoup.isValid(Ljava/lang/String;Lorg/jsoup/safety/Whitelist;)Z
RequestURI=/guestbook/process-new-entry

Caused by:

java.lang.NoSuchMethodError: org.jsoup.Jsoup.isValid(Ljava/lang/String;Lorg/jsoup/safety/Whitelist;)Z
    at org.hibernate.validator.constraints.impl.SafeHtmlValidator.isValid(SafeHtmlValidator.java:62)
    at org.hibernate.validator.constraints.impl.SafeHtmlValidator.isValid(SafeHtmlValidator.java:34)
    at org.hibernate.validator.engine.ConstraintTree.validateSingleConstraint(ConstraintTree.java:278)
    ... (abbreviated)

我知道这是由于我没有使用正确版本的 Jsoup 造成的。(我使用的是 0.2.2)在我使用的这个版本中,isValid() 的方法签名已更改或已完全删除。所以要解决这个问题,我相信我应该使用不同版本的 Jsoup。我对吗?

假设,如果我想继续使用我当前使用的版本怎么办 - 需要更改版本的另一部分是什么?它是 Hibernate 验证器吗?

另外,任何人都可以提出一种方法来找出使用哪个版本的 Jsoup?通常如何解决此类错误?

最后一个问题,行尾的“Z”字母是什么意思?我有时也会遇到其他字母。这些字母是什么意思?这在任何地方都有记录吗?

提前感谢大家帮助我更好地理解这些版本差异应该如何解决,所以我以后不需要浪费太多时间了……干杯!

4

1 回答 1

2
  1. 是的
  2. 如果您想继续使用 Jsoup 0.2.2,您必须查看是否有适用于该版本的 hibernate-validator 版本,这似乎不太可能,因为我认为 @SafeHtml 约束是相当新的,或者您会必须看看您是否可以修改源代码以使用该版本。
  3. 如果您想要 Jsoup 版本 hibernate 期望的明确答案,您可以检查您正在使用的任何版本的验证器工件的 pom。它们很容易在maven central获得。
  4. “Z”是原始布尔类型的类型描述符。VM 规范有一个列出可能值的表。
于 2011-07-30T21:59:52.220 回答