【问题标题】:Show the message of the validator for a hidden field显示隐藏字段的验证器消息
【发布时间】:2013-05-30 05:42:36
【问题描述】:

当我尝试通过 Spring Validator 验证 hidden 字段是否为空时,验证器发送的消息是 隐藏到!!但是我想展示它。这是隐藏字段:

<form:errors path="cinn" Class="errorblock"/>
<input type="hidden" value="${agact.cinn}" name="cinn" />

验证器返回消息的方法:

public void validate(Object obj, Errors err) {
        ValidationUtils.rejectIfEmptyOrWhitespace(err, "cinn", "name.required","You have to choose an agent first");
    }

有什么想法吗?

【问题讨论】:

  • 我猜你应该重新考虑你的设计。您希望用户如何编辑隐藏字段以修复其值?
  • 我自动填写,这个字段会被发送到另一个页面,这就是我隐藏它的原因。

标签: java html validation spring-mvc


【解决方案1】:

用户首先不应修改该字段(除非摆弄 firebug 等),因此最好的办法是断言该值是正确的,如果不正确,则抛出异常(例如 IllegalStateException)并对此做出反应通过显示错误消息,例如:

控制器:

@RequestMapping(..)
public String submit(..) {
    if (hidden field is empty) {
        throw new IllegalStateException("Missing XXX");
    }
    ....
   return "redirect:success"
}

@ExceptionHandler
public String handle(IllegalStateException e) {
    logger.warn("User attempted to fiddle with POST data");
    return "error";
}

其中“error”是示例视图名称。

【讨论】:

  • 抛出异常并在 UI 中做出反应是什么意思?
  • 请问我应该导入哪个 jar 来获取记录器?此导入为我返回错误:import org.hibernate.validator.internal.util.logging.Log_.logger; @Jukka
  • 使用例如带有 logback 的 SLF4J。
猜你喜欢
  • 1970-01-01
  • 2013-07-12
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 2021-08-29
  • 2011-02-13
  • 2013-03-08
相关资源
最近更新 更多