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ý

Odpovedet emailem