Pro jistotu jsem to prověřil a funguje to bez problémů. Ujistěte se, že nemáte
nějaký ve value="#{bean2.nazevSouboru}" ve značce <f:attribute/> a že v tom
beanu máte metodu getNazevSouboru(), která vrací řetězec != null.
Obávám se, že s tou aktualizací stránky po uložení souboru bude problém, protože
voláním metody responseComplete() se prostě končí JSF cyklus a už nelze nic provést.
Pavel
Zkusil jsem uvedený postup, vyhazuje NullPointerException na příkazu
String s = e.getComponent().getAttributes().get("nazev_souboru"
).toString();
Nakonec jsem to vyřešil zabalením do commandLinku, kde fungují parametry.
Zůstává nevyřešený bod 2). Jak obnovit stránku, na které je tlačítko pro
uložení souboru?
Po stisknutí tlačítka se vyvolá action metoda, ve které je mimo jiné i
aktualizace příznaku v DB.
Po uložení souboru na disk je zapotřebí aby se aktualizovaný příznak
zobrazil na stránce,
popřípadě aby se zavolala jiná jsp stránka.
K.Novotný
Toto chování je v souladu se specifikací JSF, protože komponenta
javax.faces.Button se renderuje jako HTML element "input". Jinými
slovy řečeno, commandButton nepodporuje předávání parametrů přes značku f:param. Co
s tím:
1. *místo* značky commandButton použít commandLink a nastylovat jej
tak, aby to vypadalo jako tlačítko,
2. pokud se nechcete vzdát použití značky commandButton, *zkuste* ten
parametr předat pomocí <f:attribute name="nazev_souboru"
value="#{bean2.nazevSouboru}">, do značky commandButton doplňte atribut
actionListener="#{bean2.nejakaMetoda}" a v beanu implementujte tu metodu:
public void nejakaMetoda(ActionEvent e) {
String s = e.getComponent().getAttributes().get("nazev_souboru"
).toString();
}