2011-09-20 14 views
5

Ho un <h:inputText> che accetta un valore long come questoevitare il default valore a lungo da 0 a visualizzare in h: inputText

<h:inputText value="#{ServiceTable.ID}" /> 

La proprietà viene dichiarata come questo

public class ServiceTable { 

    private long ID; 

    // Getter and setter for ID. 
} 

Quando apro il pagina, vedo sempre 0 nella casella di testo. Come posso evitarlo? Ho solo bisogno di una casella di testo vuota. Sto usando JSF 1.2.

risposta

8

Utilizzare Long anziché long. Il valore predefinito è null.

private Long ID; 

E, se si sta eseguendo Tomcat 6.0.16 o più recente o di una forchetta di esso, allora è necessario aggiungere il seguente argomento VM per argomenti di avvio del server, nonché per disabilitare EL coercizione dei primitivi e dei loro involucri :

-Dorg.apache.el.parser.COERCE_TO_ZERO=false 
+0

Grazie BalusC per la risposta. Ho letto il tuo blog regolarmente. È molto informativo e utile per i newbees. Puoi spiegarmi qual è la differenza? – Sreeram

+0

'long' è una primitiva che ha un valore predefinito di' 0' quando dichiarato come variabile di classe/istanza. 'Long' è un oggetto wrapper che ha un valore predefinito' null'. Questo è solo Java di base. Vedi anche il tutorial Java sui tipi primitivi: http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html – BalusC

+0

Grazie per l'aiuto di BalusC.It ha funzionato. Puoi dire dove aggiungere il comando sopra? – Sreeram

1

terribile! molti sviluppatori non hanno accesso al server vero e proprio a volte non puoi andare dal cliente e dirgli: "ferma il tuo server e riavvia tutto con queste opzioni di avvio".

Come mai le persone della squadra di apache non ci hanno mai pensato?

Se ci si trova in una situazione del genere, come me, un'altra soluzione è quella di ottenere il campo come stringa e analizzarlo manualmente nel bean di supporto.

Problemi correlati