2016-04-15 19 views
2

現在、初期フォームページからアップロードされたファイルを処理するSpring MVCサーブレットがあります。検証エラーとしてのSpring MVC例外の処理

リクエストハンドラは、特定の要件が不足している場合、すでにファイルに対していくつかの検証を実行していますが、残念ながら、処理が実際に行われるまですべての要件が満たされているかどうかは簡単に分かりません。

@RequestMapping(path = "/", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 
public String submit(@Valid FormData form, BindingResult result, Model model) throws IOException, ParseException 
{ 
    if (result.hasErrors()) 
    { 
     return "index"; 
    } 

    processFile(form.getFile()); 

    return "success"; 
} 

例外処理工程で発生した場合、私は@ExceptionHandler注釈付きの方法でそれを処理します。しかし、この方法では、JSPページにエラーを示すための第二のラインを持つ必要があります。

<form:input type="file" name="file" path="file" value=""/> 
<form:errors path="file" element="label" class="error" for="file"/> 
<c:if test="${not empty error}"><label class="error">${error}</label></c:if> 

方法自体は

@ExceptionHandler(Exception.class) 
public String databaseError(Model model, Exception e) 
{ 
    model.addAttribute("formData", new FormData()); 
    model.addAttribute("error", "File failed to process. Please verify the contents of the file."); 
    return "index"; 
} 

のように見えるとのように例外を処理するためにBindingResultを活用する方法はあります冗長なエラーメッセージテンプレートを避けるための検証エラー?

答えて

1

要求処理メソッド内で例外をキャッチし、catch節のBindingResultを操作できます。

+0

あなたは知っている、私はちょうど私の思考からそのアイデアを完全に却下した。 'DataAccessException'をキャッチするときに気にするべきことはありますか?私はどこか読んで覚えておいてはいけないものであることを覚えています。それは私がそれについて前に考えなかった理由です。 – Aetylus

関連する問題