Вы получаете пустую страницу, потому что вы ничего не добавили в ответ.
Когда вы делаете ResourceRequest, ваш ответ всегда ТОЛЬКО из того, что вы положили в ResorceResponse, вы никогда не получите страницу портала в качестве ответа (даже не часть ее)).
То, что вы хотите сделать, как вы пытаетесь сейчас, не возможно.Вы должны изменить свой подход.
Самый простой (не лучший) обходной путь будет
<form method="post" action="<portlet:resourceURL/>" target="_blank">
<input type="checkbox" name="Modify File" value="true" />
<input type="submit" value="Get File" />
</form>
note target="_blank"
.
Ваш контроллер ...
@ResourceMapping
public void getFile(ResourceRequest request, ResourceResponse response) {
String zipName = "myfile.zip";
try {
response.setProperty("Content-Disposition", "attachment; filename=" + zipName);
response.setContentType("application/zip");
//Write to output stream here
} catch(Exception e) {
myLogger.error("Error from throwable: " + e.getMessage());
// write the error message to the response stream here.
response.setContentType("text/plain");
response.getWriter().print("last error");
}
}
Таким образом, вы получаете файл или ошибку в новом окне, оставляя страницу портала как есть.
Другие опции: AJAX или ваш ответ может быть html с javascript, который делает запрос к вашей странице портала с дополнительным параметромза ошибку ...