2010-01-08 18 views
7

HI,JSF recortar espacios en blanco

que tiene un campo de entrada en la que quiero para recortar los espacios en blanco que conducen/arrastran. Estamos utilizando JSF y vinculante el campo de entrada a un bean de respaldo en el JSP con:

<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/> 

Mi pregunta es que además de la validación se puede hacer esto en el JSP? Sé que también podemos hacer esto usando la función java trim() en el controlador, pero nos preguntamos si hay una forma más elegante de lograr esto en JSF.

Gracias.

+0

Resolví esto simplemente usando la función trim() en el controlador antes de realizar cualquier procesamiento. Gracias por la idea alternativa, aunque McDowell. – msharma

Respuesta

6

Puede usar Converter (tutorial).

+3

Y regístrelo con 'converter-for-class' para' java.lang.String' para que no necesite definirlo en cada componente 'UIInput'. – BalusC

+0

¿Qué es este convertidor por clase? suena genial – Martlark

+1

@Martlark - es un elemento utilizado en 'faces-config.xml'. Desde la especificación: _/faces-config/converter: crea o reemplaza una clase de convertidor id/convertidor o clase de destino/clase de convertidor con la instancia de aplicación para esta aplicación web. También: _El elemento "convertidor por clase" representa el nombre de clase totalmente calificado para el que se registrará una clase Convertidor. Consulte la especificación JSF para obtener más información. – McDowell

1

Resolví esto simplemente usando la función trim() en el controlador antes de realizar cualquier procesamiento. simplemente parecía la forma más directa de hacerlo.

+2

Debe marcar esto como respuesta aceptada, si esto es lo que cree que es la respuesta correcta. –

+0

¿Qué controlador ??? –

2

Me respondió una pregunta similar here

Básicamente puede crear su propio componente que es una copia de la cual inputText recorta automáticamente, o se puede extender el inputText y añadir trim atributo que recorta si es cierto.

4

Según lo sugerido por McDowell y BalusC, puede crear un convertidor y registrarlo con la anotación @FacesConvert para la clase String. Y luego, en el método getAsObject, compruebe el tipo UIComponent y aplique el recorte solo para los componentes HtmlInputText.

@FacesConverter(forClass = String.class) 
public class StringTrimConverter implements Serializable, javax.faces.convert.Converter { 

    @Override 
    public Object getAsObject(FacesContext context, UIComponent cmp, String value) { 

     if (value != null && cmp instanceof HtmlInputText) { 
      // trim the entered value in a HtmlInputText before doing validation/updating the model 
      return value.trim(); 
     } 

     return value; 
    } 

    @Override 
    public String getAsString(FacesContext context, UIComponent cmp, Object value) { 

     if (value != null) { 
      // return the value as is for presentation 
      return value.toString(); 
     } 
     return null; 
    } 

} 
+1

O, si no desea codificarlo usted mismo, consulte http://showcase.omnifaces.org/converters/TrimConverter –

Cuestiones relacionadas