コントローラメソッド内で例外が発生したときに同じページにリダイレクトする方法。ここに私のコードです。Exceptionalハンドラメソッドから同じページへのリダイレクション
これは私のUserControllerでクラス
@Controller
public class UserController{
@Autowired
private UserService userService;
@RequestMapping("/user/{userId}")
public ResponseEntity<UserDto> loadUserById(@PathVariable("userId" int userId){
UserDto user=userService.loadUserByUserId() int userId);
if(user==null){
throw new UserNotFoundException("No user found with this id");
}
return user;
}
@ExceptionHandler(UserNotFoundException.class)
public String handleUserNotFoundException(){
// here i want to redirect to the same page from which the request was coming with some message like "with this id user is not found"
}
}
ですが、どういうわけか、私は「referal」ヘッダー名を使用して例外ハンドラメソッドで元の要求のURLを取得するためのURLを取得します。 「リファラー」を使用して、リクエストの発信元を特定できます。 は、ここで再び、ここで私が注意
@ExceptionHandler(UserNotFoundException.class)
public String handleUserNotFoundException(HttpServletRequest request, RedirectAttributes attributes){
String uri=request.getHeader("referer");
// now i want to redirect that uri
return "redirect:"+uri;
}
のサンプルコードは以下のようなRedirectAttributesを使用する必要があり、そのためにURIにいくつかのメッセージを送りたいという
@ExceptionHandler(UserNotFoundException.class)
public String handleUserNotFoundException(HttpServletRequest request){
String uri=request.getHeader("referer");
// now i want to redirect that uri
return "redirect:"+uri;
}
でものために私のコードです:どこかは、私が話を聞きました例外ハンドラメソッドの引数の制限。 RedirectAttributesをException Handlerメソッドに追加することはできません。そうした場合、そのメソッドは例外が発生したときにSpringによって無視されます。
そして、リダイレクトコードをリクエストハンドラメソッド(loadUserById(int)など)に書きたくありません。 Bcoz私はそうする場合、私は例外が発生するすべてのコントローラメソッドで同じコードを記述する必要があります。私の疑問は
1)は例外ハンドラメソッド
2にリダイレクトプロセスに私のメッセージ情報を設定するための任意の別の方法があることは何であるかそう 、)私はソースを取得するには、「referal」を使用することができます(正確なURIを返します)
何か考えてください、 ありがとうございました。