Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-12-2011, 17:14   #1
mux85
Senior Member
 
L'Avatar di mux85
 
Iscritto dal: Feb 2006
Messaggi: 958
[Java-JSF] Aggiungere componenti dinamicamente

Ciao a tutti, ho iniziato da pochi giorni a lavorare con JSF e avrei bisogno di una mano. Ho una pagina con un menù a tendina e un pulsante, vorrei che quando si preme il pulsante vengano aggiunti alla pagina dei componenti (text input, check box, ecc...) in base a cosa c'è selezionato nel menu.
So come associare un action listener al pulsante ma dal suo interno non riesco ad aggiungere contenuti alla pagina in quanto nel context (ottenuto con FacesContext.getCurrentInstance()) il ResponseWriter è null, quindi quando chiamo la encodeEnd di un qualsiasi componente ricevo una NullPointerException (invece una semplice addMessage funziona).
Provando a fare la stessa cosa dentro a un componente creato da me invece che nell'action listener tutto funziona correttamente perchè il context (parametro di input di encodeBegin) contiene un ResponseWriter. Però in questo modo i componenti vengono creati subito e non alla pressione del pulsante.
Come faccio a inizializzare quel ResponseWriter?
O sto sbagliando completamente approccio?
Grazie a tutti
mux85 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2011, 12:13   #2
mux85
Senior Member
 
L'Avatar di mux85
 
Iscritto dal: Feb 2006
Messaggi: 958
UP
mux85 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2011, 12:19   #3
gokan
Senior Member
 
L'Avatar di gokan
 
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
Ciao, ti consiglio un altro approccio.
Quando hai una pagina con dei componenti jsf e vuoi mostrare o nascondere alcuni di questi componenti in base a delle necessità o controlli con logiche particolari ti conviene utilizzare la proprietà rendered.
Questa proprietà impostata a true piuttosto che a false ti consenti di visualizzare o nascondere il componente nella pagina.

Ti faccio un esempio classico.
Supponiamo che vuoi visualizzare una coppia label + inputText in base ad una proprietà del tuo backing bean jsf.

Codice PHP:
<h:panelGrid id="panel" columns="2" border="1" rendered={userBean.visualizzaPannello}>
  <
h:outputLabel for="username" value="#Nome" />
  <
h:inputText id="username" value="#{userBean.name}" />
</
h:panelGrid
Nel tuo backing bean, alla pressione di un pulsante, quando scateni una action postresti decidere di impostare la proprietà a tuo piacimento.

boolean visualizzaPannello = true; //oppure a false

Codice:
public class UserBean{

private boolean visualizzaPannello = true; //oppure a false

//..getter e setter

//action
public String faiQualcosa(){
 if(visualizzaPannello == true) 
    visualizzaPannello = false;
  else visualizzaPannellon = true;
  
return "laStessaPagina";
 }

}
Ciao
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer
gokan è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2011, 15:44   #4
mux85
Senior Member
 
L'Avatar di mux85
 
Iscritto dal: Feb 2006
Messaggi: 958
Quindi si tratterebbe solo di mostrare/nascondere elementi?
Se è così non si adatta al mio caso. Non posso semplicemente mettere tutti gli elementi possibili e mostrare quelli necessari. In pratica nel menu a tendina io seleziono un tipo di documento e da un file xml vado a leggere le proprietà di quel particolare tipo di documento per mostrare dei campi da compilare e fare una ricerca in base a quei campi. Caricare in anticipo tutti i tipi possibili mi sembra parecchio sconveniente se non impossibile.
Grazie per il suggerimento ma ne avete altri?
mux85 è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2011, 15:58   #5
gokan
Senior Member
 
L'Avatar di gokan
 
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
Non devi caricare in anticipo tutti i casi possibili.

Supponiamo tu abbia il caso di due menu a tendina classici come provincia e comuni.

Selezioni la provincia, se vuoi cliccki un pulsante (o in alternativa usi un componente ajax enabled) e quindi carichi il menu dei comuni.

Quando cliccli il pulsante tu esegui un metodo action che fa qualcosa di simile.

public String dammiComuni(){
List<Comune> comuni = ejb.cercaComuniDaProvincia(provincia);
...
}

l'oggetto provincia usata è una stringa che sta dietro il backing bean (ed è usata nel value della prima <h:selectOneMenu>).

Con la lista di comuni ti costruisci invece la seconda tendina (che inizialmente vuota ed invisibile).

Spero di esserti stato utile.
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer
gokan è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2011, 09:39   #6
mux85
Senior Member
 
L'Avatar di mux85
 
Iscritto dal: Feb 2006
Messaggi: 958
Grazie ma mi manca ancora qualcosa. Provo a spiegare un po' meglio cosa devo fare così magari potete aiutarmi ulteriormente.
A seconda di cosa c'è selezionato nel primo menu a tendina (che indica un tipo di documento, ad esempio: fattura, bolla di trasporto, scheda di un dipendente, ecc...) una volta premuto il tasto devo far comparire dei campi che cambiano in base a cosa c'è selezionato. Non devo riempire un altro menu a tendina. In un caso potrei aver bisogno di due campi di testo e una checkbox (con relative etichette), un'altra volta un campo di testo, una checkbox e una combo. Insomma il numero e il tipo di campi può cambiare radicalmente da un tipo di documento all'altro. Posso lo stesso usare il metodo che mi suggerisci? Se si mi sfugge come, puoi spiegarmi meglio? Grazie
mux85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2011, 10:06   #7
gokan
Senior Member
 
L'Avatar di gokan
 
Iscritto dal: Apr 2002
Città: Palermo
Messaggi: 4913
In linea teorica potresti usare l'approccio sopra e mettere dei panelgrid per ogni tipo di documento.
Da quello che mi dici, ad esempio, si potrebbe usare un approccio ancora diverso, utilizzando una jsp diversa per ogni tipo di documento. In una pagina iniziale si potrebbe decidere il tipo di documento e scegliendo un documento piuttosto che un altro l'utente venga direzionato su una pagina/jsp/xhtml diversa.

Bye
__________________
Sun Certified Java Programmer - Sun Certified Web Component Developer - Sun Certified Business Component Developer
gokan è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2011, 10:31   #8
mux85
Senior Member
 
L'Avatar di mux85
 
Iscritto dal: Feb 2006
Messaggi: 958
La nuova pagina da usare però andrebbe costruita a priori per ogni tipo di documento no? Io invece vorrei leggere i campi da creare da un file xml al momento del caricamento della pagina
mux85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
ESA: rilevati 40 mila asteroidi vicino a...
La batteria salva fabbriche di EQORE ott...
SpaceX Starship: iniziati i test della t...
Datacenter IA nello spazio entro 5 anni,...
Telescopio spaziale James Webb: rilevato...
Ericsson Mobility Report: nel 2025 il 5G...
PLAI DEMO DAY: si chiude il secondo cicl...
Google rilascia Nano Banana Pro: il nuov...
ChatGPT si rinnova ancora: disponibile l...
Ring lancia super sconti di Black Friday...
Black Friday 2025: 450 euro di sconto su...
Tutte le offerte Blink in un unico posto...
OpenAI e Foxconn uniscono le forze per r...
Ricarica delle auto elettriche in 3 minu...
Lucid presenta Gravity Touring, il SUV e...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v