0

アノテーションを使用してSpring MVCに取り組んでいます。customDateEditory を登録していません

My Class には、タイプ java.lang.Date のプロパティが 1 つあります。

私が読んだのは、customDateEditor がデフォルトで登録されていないということでした。しかし、空白の日付でフォームを送信すると、 illegalArgumentException がスローされます

日付を入力して送信すると、例外がスローされません

その後、BindingResult をコントローラーメソッドの引数として追加し、空白の値を受け入れるようになりました

コントローラーに initbinder を追加していません

コントローラ

   @Controller("orderController")
   @RequestMapping(value = "/admin")
    public class OrderController extends BaseController {



    @RequestMapping(value = "/viewOrders.htm", method = RequestMethod.GET)
    public String viewOrders(@ModelAttribute("searchOrder") SearchOrder       searchOrder,BindingResult bindingResult,Model model) {

        List<Order> orders=orderService.getOrders(searchOrder);
        model.addAttribute("orders", orders);

        return "order/searchOrder";
    }
    }

日付フィールドを含む Pojo

public class SearchOrder {

    private Integer orderId;
    private Long customerId;
    private String customerPo;
    private Date dateCreatedFrom;
    private Date dateCreatedTo;
    private Date dateUpdatedFrom;
    private Date dateUpdatedTo;


    public Integer getOrderId() {
        return orderId;
    }

    public void setOrderId(Integer orderId) {
        this.orderId = orderId;
    }

    public Long getCustomerId() {
        return customerId;
    }

    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    public String getCustomerPo() {
        return customerPo;
    }

    public void setCustomerPo(String customerPo) {
        this.customerPo = customerPo;
    }

    public Date getDateCreatedFrom() {
        return dateCreatedFrom;
    }

    public void setDateCreatedFrom(Date dateCreatedFrom) {
        this.dateCreatedFrom = dateCreatedFrom;
    }

    public Date getDateCreatedTo() {
        return dateCreatedTo;
    }

  public void setDateCreatedTo(Date dateCreatedTo) {
        this.dateCreatedTo = dateCreatedTo;
    } 

    public Date getDateUpdatedFrom() {
        return dateUpdatedFrom;
    }

    public void setDateUpdatedFrom(Date dateUpdatedFrom) {
        this.dateUpdatedFrom = dateUpdatedFrom;
    }

    public Date getDateUpdatedTo() {
        return dateUpdatedTo;
    }

    public void setDateUpdatedTo(Date dateUpdatedTo) {
        this.dateUpdatedTo = dateUpdatedTo;
    }

@Override
    public String toString() {
        return "SearchOrder [orderId=" + orderId + ", customerId=" + customerId
                + ", customerPo=" + customerPo + ", dateCreatedFrom="
            + dateCreatedFrom + ", dateCreatedTo=" + dateCreatedTo
                + ", dateUpdatedFrom=" + dateUpdatedFrom + ", dateUpdatedTo="
            + dateUpdatedTo + "]";
    } 


 }

光を当ててください

4

1 に答える 1

1

このバインディング結果よりも追加するBindingResultと、「機能しない」バインディングと検証に関する情報が含まれます。BindingResult.hasErrors()バインド結果に「問題」に関する情報が含まれているかどうかを確認するために使用できます。

メソッド パラメーターがない場合BindingResult、バインディング エラーが発生すると、Spring は自動的に例外をスローします。

追加

 for(ObjectError objectError : bindingResult.getAllErrors()) {
       Sysout.println("error: " + objectError);
 }

バインディング エラーに関する情報を取得するには


(ところで: メソッドのパラメーターの順序は重要です:BindingResultパラメーターは、 this でチェックする必要がある Command オブジェクトの後の次のパラメーターでなければなりませんBindingResult)

于 2013-10-26T20:07:14.027 に答える