Domanda

Ho una situazione, ho un session bean con la lista, questa lista mostro nella tabella dei dati HTML. Quando l'utente preme l'URL dal browser o href normale, devo mostrare tutti i record. È prevista per la ricerca di dati anche, dove ho per mostrare l'elenco filtrato. Ora, dopo che un utente ha fatto la ricerca, l'elenco contiene record filtrati e dopo aver fatto questo che lascia la pagina a qualche altro, e ora se l'utente preme l'URL o utilizza il menu per tornare a questa pagina, dal momento che ho questa lista in session bean, ho ancora l'elenco filtrato.

Dal momento che non v'è alcuna azione di default in JSF 1.1 o 2.0 preRenderView concetto, la sua difficile cancellare l'elenco e ottenere non dati filtrati (tutti i risultati) di nuovo. trucchi anche in getList () metodo di riuscire a realizzare il compito.

Ho programmato di utilizzo fase di ascoltatore, come quando un utente raggiunge una pagina tramite href o colpire URL nel browser invocare fase di applicazione non accade. Posso alternare variabile booleana nella mia session bean e in getList () posso eseguire qualche trucco per controllare che fosse url, colpito href o con pulsante di comando.

Spero di aver stato chiaro. Insomma devo identificare nel mio fagioli se la richiesta è venuto direttamente dal href, browser o un'azione. Se i record di filtro azione di ricerca per la tabella di dati se non mantengono la cache lista e mantengono mostrando il più a lungo di ricerca non è fatta.

Basta che mi guidi se sto facendo le cose in modo giusto o pensare troppo o si può fare in modo molto più efficiente.

Grazie in anticipo. piattaforma di Well è JSF 1.1 a 10.3 WebLogic Portal .....

È stato utile?

Soluzione

azioni 1.x JSF Utilizzare il metodo di default POST. Collegamenti diretti / segnalibri / ecc sono con il metodo della natura GET. Dal momento che non c'è ResponseStateManager#isPostback() o FacesContext#isPostback() in JSF 1.1, è necessario determinare il metodo di richiesta da soli:

HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
boolean postback = "POST".equalsIgnoreCase(request.getMethod());

o controllare per un determinato parametro nella mappa parametro di richiesta, ma non posso dire dalla parte superiore della testa che quello che si desidera controllare. Non hai per determinare da soli.

boolean postback = facesContext.getExternalContext().getRequestParameterMap().containsKey(SOME_KEY);

Se postback è true, quindi è stato invocato un'azione JSF.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top