Da un'azione nel mio bean, sto provando a reindirizzare a un'altra pagina in attesa di un parametro di visualizzazione. Qual è il modo consigliato per farlo in JSF2?Come si passano i parametri di visualizzazione durante la navigazione da un'azione in JSF2?
Ad esempio, dire la mia pagina di origine è: http://localhost/page1.xhtml
ha un commandButton che chiama un'azione:
<h:commandButton value="submit" action="#{myBean.submit}" />
dove il mio fagiolo assomiglia:
@ManagedBean
@RequestScoped
public class MyBean {
private int id;
public String submit() {
//Does stuff
id = setID();
return "success";
}
Ed ora, voglio che il ritorno del action 'submit' per spostarsi http://localhost/page2.xhtml?id=2
Ho provato a fare questo con una visione a param nel mio caso la navigazione, ma con risultati strani. Il frammento di faces-config è simile al seguente:
<navigation-rule>
<from-view-id>/page1.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/page2.xhtml</to-view-id>
<redirect>
<view-param>
<name>id</name>
<value>#{myBean.id}</value>
</view-param>
</redirect>
</navigation-case>
</navigation-rule>
Il comportamento strano essere, anche se MyBean è impostato su richiesta ambito, si chiama solo myBean.getId() la prima volta che carico la mia domanda, e riutilizza che lo stesso valore per tutte le chiamate successive, producendo parametri di visualizzazione errati per pagina2.
Così sto cercando sia un modo migliore per fare questo, o una ragione/soluzione per il motivo per cui la vista-param non viene richiesto dal mio chicco di volta in volta.
Ho fatto un piccolo test con esso, e penso che funzioni come volevo. Grazie! Anche se presumibilmente, intendevi "success? Faces-redirect = true & includeViewParams = true"; e –
dule
sì, mi dispiace. Ho incollato entrambe le parti di codice da un progetto di lavoro per evitare errori di battitura, e qui segue: il primo proviene dal modello xml (dove la e commerciale deve essere sfuggito) ed è incompleto e l'altro ha un nome di variabile diverso. Lo modifico subito. – fdreger
@fdreger dove inseriresti i metadati quando usi h: commandButton? – Kevin