Обрабатывать многочастный запрос, который не является запросом Action? - PullRequest
1 голос
/ 25 января 2011

Я думал, возможно ли обработать многочастный запрос, который не является запросом Action.Существует причина, почему это кажется мне невозможным:

Только ActionRequest реализует методы getFile ().Я не могу найти простой способ, как получить файл из запроса, кроме Action action

Что если я не использую html-форму для загрузки файла и не хочупредставление, которое будет отображаться после запроса действия - этап отображения происходит всегда после этапа действия.

Что делать, если я хочу создать почтовый запрос (с файлом (файлами)) с помощью ajax и использовать обработчик @ResourceMapping.Как мне получить его из ResourceRequest?

Большое спасибо за ваши мысли.

1 Ответ

1 голос
/ 27 января 2011

Это "шаблон", который на самом деле лучший способ обработки многочастных запросов

Запрос действия от слоя представления идет к этому методу:

@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 в свой контекст сервлета / портлета:

<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="1" />
...