Zdravím, jsem začínající s JSF a potřebuji poradit, mám jsp stránku s tlačítkem:
<t:commandButton value="Stáhnout soubor" action="#{bean.ulozSoubor}">
<f:param name="nazev_souboru" value="bean2.nazevSouboru" />
</t:commandButton>
obě beany mají platnost request
a v bean třídě action metodu
public String ulozSoubor() {
FacesContext ctx = FacesContext.getCurrentInstance();
String fileName = (String)
ctx.getCurrentInstance().getExternalContext().getRequestParameterMap().get("nazev_souboru");
log.error("SOUBOR=" + fileName);
if (!ctx.getResponseComplete()) {
String contentType = "text/plain";
HttpServletResponse response = (HttpServletResponse)
ctx.getExternalContext().getResponse();
response.setContentType(contentType);
response.setHeader("Content-Disposition", "attachment;filename=\""+ fileName +
"\"");
ServletOutputStream out;
try {
out = response.getOutputStream();
out.write("Obsah souboru...".getBytes());
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ctx.responseComplete();
}
return "hlavni";
}
A dotazy (důležitější je bod2)):
1) nefunguje předání parametru, v action metodě je parametr jmeno_souboru null
(pokud zabalím commandButton do commandLinku už funguje předání parametru, ale
zobrazuje se
mi vedle tlačítka vpravo malá pomlčka renderovaná jako link)
2) po uložení souboru v action metodě se mi neprovede přesměrování na stránku
definovanou návratovým
řetězcem action metody "hlavni" (v případě, že v action metodě zahešuji kód pro
uložení souboru,
je přesměrování v pořádku)
Díky, Kamil Novotný