3

Spring rooを使用しており、コントローラーの1つで、モデル属性「error」を次のような文字列で設定しています。

//uiModel.addAttribute("error", "Duplicate name for Vendor");

@RequestMapping(method = RequestMethod.POST)
public String create(@Valid Vendor vendor, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) {
    if (bindingResult.hasErrors()) {
        uiModel.addAttribute("vendor", vendor);
        addDateTimeFormatPatterns(uiModel);
        return "vendors/create";
    }

    try {
        vendorService.saveVendor(vendor);
        uiModel.asMap().clear();
    } catch(Exception e) {
        uiModel.addAttribute("vendor", vendor);
        uiModel.addAttribute("error", "Duplicate name for Vendor");
        addDateTimeFormatPatterns(uiModel);
        return "vendors/create";
    }
    return "redirect:/vendors/" + encodeUrlPathSegment(vendor.getId().toString(), httpServletRequest);
}

ここで私の質問は、作成ページにエラー(nullでない場合)をどのように表示するかです。これは今のところ以下のとおりです。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<div xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:spring="http://www.springframework.org/tags" version="2.0">
    <jsp:directive.page contentType="text/html;charset=UTF-8"/>
    <jsp:output omit-xml-declaration="yes"/>
    <form:create id="fc_domain_Vendor" modelAttribute="vendor" path="/vendors" render="${empty dependencies}" z="MGZPL+gO+CDX6M4iRO/z/qRfnJI=">
        <field:input field="name" id="c_domain_Vendor_name" required="true" z="s+3hs8xXpSZ71RoD0ktXy0BnjS0="/>
        <field:input field="email" id="c_domain_Vendor_email" validationMessageCode="field_invalid_email" z="+4rIdPGArWhHQlrFG/1N6yrKKno="/>
        <field:input field="mobile" id="c_domain_Vendor_mobile" max="16" z="kgM5Z9jJ6xW9BxiPPB4Ipz0TUKg="/>
    </form:create>
    <form:dependency dependencies="${dependencies}" id="d_domain_Vendor" render="${not empty dependencies}" z="hLv7c7K8OOSRrBJKgKuw9H1+GvA="/>
</div>

前もって感謝します

4

3 に答える 3

2

Spring roo は、そのフィールドに関連付けられたエラー メッセージを出力する spring タグ form:errors を使用します。

したがって、Spring form:errors タグによって取得されるエラー メッセージを生成するだけです。

検証を行うには多くの方法がありますが、最も簡単な方法はコントローラー自体で行うことです。

したがって、コードは次のように変更されます。

try {
    vendorService.saveVendor(vendor);
    uiModel.asMap().clear();
} catch(Exception e) {
    uiModel.addAttribute("vendor", vendor);
    bindingResult.rejectValue("name", "vendor.name.duplicate");
    addDateTimeFormatPatterns(uiModel);
    return "vendors/create";
}

注: vendor.name.duplicate は、WEB-INF/i18n/messages.properties で定義する必要があるメッセージ プロパティです。

于 2013-03-23T09:45:49.560 に答える
1

次のスニペットを使用してエラー文字列を取得し、アラート メカニズムを使用してエラー メッセージを表示できます。

    <c:if test="${not empty error}">
           <c:out value="${error}"/>
    </c:if>
于 2013-03-22T13:53:12.743 に答える