2011-09-20 5 views
5

Tengo un <h:inputText> que acepta un valor long como estoevitar el incumplimiento de valor a largo de 0 a mostrar en h: inputText

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

La propiedad se declara como esto

public class ServiceTable { 

    private long ID; 

    // Getter and setter for ID. 
} 

Cuando abro el página, siempre veo 0 en el cuadro de texto. ¿Cómo puedo evitarlo? Solo necesito un cuadro de texto vacío. Estoy usando JSF 1.2.

Respuesta

8

Utilice Long en lugar de long. Por defecto es null.

private Long ID; 

Y, si se está ejecutando Tomcat 6.0.16 o posterior o un tenedor de ella, entonces es necesario agregar el siguiente argumento VM a los argumentos de inicio del servidor, así desactivar EL coerción de primitivas y sus envoltorios :

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

Gracias BalusC por la respuesta. Leo su blog regularmente. Es muy informativo y útil para los recién nacidos. ¿Puedes explicarme cuál es la diferencia? – Sreeram

+0

'long' es una primitiva que tiene un valor predeterminado de' 0' cuando se declara como variable de clase/instancia. 'Long' es un objeto contenedor que tiene un valor predeterminado de' null'. Esto es solo Java básico. Consulte también el tutorial de Java sobre tipos primitivos: http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html – BalusC

+0

Gracias por la ayuda BalusC.Funcionó. ¿Puede decir dónde agregar el comando anterior? – Sreeram

1

awful! muchos desarrolladores no tienen acceso al servidor real, y a veces simplemente no puedes ir al cliente y decirle: "detén tu servidor y reinicia todo con estas opciones de inicio".

¿Por qué la gente en el equipo de apache nunca pensó en eso?

Si se encuentra en esa situación, como yo, otra solución es obtener el campo como una Cadena y analizarlo manualmente en su bean de respaldo.

Cuestiones relacionadas