インターセプターのコントローラーのメソッドと、インターセプターのメソッドによって返されるオブジェクトを達成する必要があります。
なぜ?
メソッドに注釈が付けられた注釈を使用して、クライアントに返されるデータ型を宣言したいからです。例えば :
@Controller
@Scope("prototype")
@RequestMapping("/hello/")
public class HelloWorld {
@ResponseType(DataType.JSON)
@RequestMapping(value="/{username}")
public UserInfo hellowUser(@PathVariable("username") String username) {
UserInfo userInfo = new UserInfo();
userInfo.setUsername(username);
return userInfo.
}
}
次にインターセプター:
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throw Exception {
Method method = getRequestedMethod();
Object result = getResultReturnedByTheMethod();
ResponseType responseType = method.getAnnotation(ResponseType.class);
DataType type = responseType.value();
swich(type) {
case DataType.JSON : writeJson(result);
case .......
...
}
}
つまり、「getRequestedMethod」と「getResultReturnedByTheMethod」を正しく実装するにはどうすればよいでしょうか。