我有一个自定义调度程序servlet,它扩展了默认的DispatcherServlet,对所有请求进行了一些验证。
由于我将获取请求中的所有参数(getInputStream() - > Map)进行一些验证,我想将params传递给控制器或将params添加到上下文中,我可以从中获取它们cotroller。
现在我把所有参数都放到全局Map中,但我想知道是否有一些简单的方法。
public class CustomDispatcherServlet extends DispatcherServlet {
private static final long serialVersionUID = 7250693017796274410L;
@Override
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
doFilter(request, response);
super.doDispatch(request, response);
}
...
private void doFilter(HttpServletRequest request, HttpServletResponse response) {
WLNResponse<String> error = null;
try {
boolean isSignValid = checkSignValidity(request);
...
private boolean checkSignValidity(HttpServletRequest request) throws IOException {
// pass this params to controller or somewhere I can get from controller
Map<String, Object> params = WebUtils.readParams(request);
...
答案 0 :(得分:1)
我将如何验证控制器本身的params。例如
@Controller
public ControllerClass
{
@RequestMapping(value = "/someurl", method = RequestMethod.GET, params = {
"requestParam"})
public void someMethod(@RequestParam(value = "requestParam") String requestParam)
{
System.out.println("This is the value of the RequestParam requestParam " + requestParam);
}
}
这样您就可以在控制器中进行验证。
唯一没有解决的问题是,如果正在进行的请求未解析为有效的控制器。为此,我将使用注释@controllerAdvice
。
答案 1 :(得分:0)
目前,我只是使用request.setAttribute()将params放入属性并从控制器中获取.......