将自定义参数添加到spring mvc控制器

时间:2014-05-11 16:43:46

标签: java spring-mvc controller

我有一个自定义调度程序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); 
      ...

2 个答案:

答案 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放入属性并从控制器中获取.......