如何处理无法使用RequestMapping获取表单数据

时间:2016-05-31 01:31:13

标签: java spring spring-mvc

我实现了一个控制器如下:

@RequestMapping(value = "/export", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<Object> Export(HttpServletRequest req,     HttpServletResponse response, String type,String text) {
........        
}

当从客户端发布长度小(约20k)的文本(表单参数)时,控制器工作正常并且可以获得表单参数(数据和类型)。

但是当来自客户端的文本(表单参数)非常长(超过200k)时,'type'和'text'在服务端是null。

谁知道如何处理它。

2 个答案:

答案 0 :(得分:1)

表单params可以从请求中读取为req.getParameter("type")。 由于您已在方法签名

中使用reqresp,因此请按以下方式更改方法
public @ResponseBody ResponseEntity<Object> Export(HttpServletRequest req,     HttpServletResponse response){
   String type = req.getParameter("type");
   String text = req.getParameter("text");
}

答案 1 :(得分:1)

您可以使用Spring MVC注释,如下所示。

    /// <summary>
/// Wrapper to allow testing with StreamReader
/// </summary>
public class StreamReaderWrapper : IStreamReader
{
    private StreamReader _streamReader;

    public void Dispose()
    {
        if (_streamReader != null)
        {
            _streamReader.Dispose();
            _streamReader = null;
        }
    }

    public IStreamReader GetNew(Stream stream)
    {
        Dispose();
        _streamReader = new StreamReader(stream);
        return this;
    }

    public string ReadToEnd()
    {
       return _streamReader.ReadToEnd();
    }

    public Task<string> ReadToEndAsync()
    {
        return _streamReader.ReadToEndAsync();
    }
}