2011-01-25 1 views
1

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

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

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

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

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

ответ

1

Это «шаблон», который AFAIK лучший способ обработки Multipart запрашивает запрос

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

@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); 
} 

Вы создаете «бобовые» виды:

@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" />