我一直在想是否可以处理不是操作请求的多部分请求。对我来说这似乎不可能是有原因的:
只有 ActionRequest 实现
getFile() 类方法。我不能
找到任何简单的方法来获取文件
出于除 Action 之外的请求
要求
如果我不使用 html 表单上传文件,并且我不希望在操作请求之后呈现视图,该怎么办 - 呈现阶段总是在操作阶段之后发生。
如果我想通过 ajax 创建一个 post 请求(带有文件)并使用 @ResourceMapping 处理程序,该怎么办?如何从 ResourceRequest 中获取它?
非常感谢您的想法。
这是处理多部分请求的最佳方式的“模式”
来自视图层的操作请求转到此方法:
@ActionMapping(params = "javax.portlet.action=sample")
public void response(MultipartActionRequest request, ActionResponse response) {
response.setRenderParameter("javax.portlet.action", "success");
List<MultipartFile> fileList = request.getFiles("file");
}
渲染阶段如下:
@RequestMapping(params = "javax.portlet.action=success")
public ModelAndView process(RenderRequest request, Model model) throws IOException {
Map map = new HashMap();
map.put("test", new Integer(1));
return new ModelAndView("someView", map);
}
您创建一个“bean”视图:
@Component("someView")
public class SomeView extends AbstractView {
private Logger logger = Logger.getLogger(SomeView.class);
@Override
protected void renderMergedOutputModel(Map map, HttpServletRequest request, HttpServletResponse response)
throws Exception {
logger.info("Resolving ajax request view - " + map);
JSONObject jsonObj = new JSONObject(map);
logger.info("content Type = " + getContentType());
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(jsonObj.toString());
response.getWriter().flush();
}
}
将 BeanNameViewResolver 添加到 servlet/portlet 上下文中:
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="1" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)