Я пытаюсь написать контроллер, который создает таблицу CSV для сохранения в виде файла.setContentType не работает для контроллера портала
Я написал следующее действие и оказывают методы
/**
* Get the stats for the search.
*/
@ActionMapping(params={"controller=exportView","action=csv"})
public void viewInstance(ActionRequest request, ActionResponse response){
response.setRenderParameter("controller", "exportView");
response.setRenderParameter("action","csv");
}
@RenderMapping(params={"controller=exportView","action=csv"})
public String viewInstance(@RequestParam(value = "id", required = true) final String viewInstanceId, RenderRequest request, RenderResponse response, Model model) throws Exception {
ApplicationContext ctx = ThreadApplicationContextHolder.getApplicationContext();
.. do some stuff
String filename = getFilename();
response.setContentType("text/csv"); // go bang here
response.addProperty(ExportViewInstanceAsCsvFileController.HEADER_CONTENT_DISPOSITION, "attachment;filename=" + filename + ExportViewInstanceAsCsvFileController.FILE_EXT);
viewInstanceFileRenderer.renderSearchResultNodesToFile(getData(), response.getPortletOutputStream());
return "portlet/exportView";
}
Когда запускается сервер жалуется, что тип содержимого не «текст/html», поэтому я внес изменения в portlet.xml иметь
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<supports>
<mime-type>text/csv</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
но websphere, кажется, игнорирует это.
Когда я отлаживаю и запускаю request.getResponseContentTypes()
, в коллекции есть только text/html
. Структура приложения имеет портлет для входа в систему, а затем три веб-приложения для обработки различных аспектов приложения. Я изменил портлет в веб-приложении, которое обрабатывает генерацию электронной таблицы, но не в портлете входа в систему.
Мой следующий шаг - изменить это (logon portlet.xml), но я не уверен, что он сработает.
Есть ли другие места, которые я могу посмотреть?