0

独自のform:errorsタグを実装するか、カスタムタグでラップしようとしています。私がそれをしたい理由は、メッセージをカスタマイズしたり、いくつかのアイコンを表示したりする<form:errors />ためです。その目的に十分かどうかはわかりません。

置き換えることができるコードを見つけました<form:errors path="foo" />

<spring:bind path="foo">
  <c:if test="${status.error}">
    <img src="<c:url value="/resources/images/warning.png"/>" 
       width="31" height="32" class="error_tooltip" title="${status.errorMessage}" />
  </c:if>
</spring:bind>

ところで...誰かが説明できれば、これがどのように機能するのかわかりません。そのコードをカスタムタグ(タグファイル)内に配置しようとしましたが、
javax.servlet.jsp.JspTagException:BindingResultもBean名'form'のプレーンターゲットオブジェクトもリクエスト属性として使用できません
提案はありますか?

ps。また、ajaxリクエストでフィードバックを返すための解決策を見つけたいと思います。BindingResultオブジェクトをJSON化することが適切なソリューションであるかどうかはわかりません。そのため、独自の「フィードバック」オブジェクトを適切に作成します。タグがカスタマイズに役立たない
場合は、通常のリクエストとajaxリクエストの両方に「フィードバック」オブジェクトを使用すると便利です(モデルを使用してJSPに渡すか、ajaxのJSON応答を使用します)。<form:error/>

編集: これが私のタグコードです:

<%@attribute name="name" required="true" %>

<spring:bind path="${name}">
  <c:if test="${status.error}">
    <img src="<c:url value="/resources/images/warning.png"/>" 
       width="31" height="32" class="error_tooltip" title="${status.errorMessage}" />
  </c:if>
</spring:bind>
4

1 に答える 1

1

はい、タグ<form:errors>を使用してカスタマイズされたフォームの検証を行います。このタグが機能するには、コントローラーに BindingResult が必要です。

@RequestMapping(value="/save",method=RequestMethodPOST)
public String save(@Valid Bean yourBean, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        return "/create"; // your form
    } else {
        yourBean= beanService.save(yourBean);
        return "redirect:/view/" + yourBean.getId(); // other action  
    } 
}

フォーム検証のカスタマイズに関する優れたチュートリアルを読むことができます。

于 2012-12-18T20:12:11.380 に答える