2012-05-04 13 views
12

Qualcuno sa di un widget di immissione del testo di Google Web Toolkit che visualizza un messaggio all'interno del campo quando è vuoto?Come aggiungere un segnaposto a un campo di immissione testo GWT

E.g. un campo di nome che direbbe: 'inserisci il tuo nome' e quando l'utente inizia a digitare l'etichetta viene rimossa per mostrare il testo digitato.

Come andresti su questo?

Daniel

risposta

31

Questo fa il lavoro per me in una textarea:

yourInputField.getElement().setPropertyString("placeholder", "enter your first name"); 

penso che è una caratteristica di HTML5.

+0

Impressionante. Funziona perfettamente. – supercobra

1

Con questa soluzione è possibile definire una proprietà aggiuntiva nella legante xml:

La soluzione:

public class MorePropertiesTextArea extends TextArea { 
    private String moreProperties; 

    public MorePropertiesTextArea() {} 

    public void setMoreProperties(String moreProperties) { 
     for (Entry<String, String> entry : parse(moreProperties).entrySet()) { 
      getElement().setAttribute(entry.getKey(), entry.getValue()); 
     } 
     this.moreProperties = moreProperties; 
    } 


    public String getMoreProperties() { 
     return moreProperties; 
    } 

    private Map<String, String> parse(String moreProperties) { 
     String[] pairStrings = moreProperties.split(";"); 
     HashMap<String, String> map = new HashMap<>(); 
     for (String pairString : pairStrings) { 
      String[] pair = pairString.split("="); 
      if(pair.length != 2) 
       throw new IllegalArgumentException("at " + pair + " while parsing " + moreProperties + 
         ". Use format like: 'spellcheck=false; placeholder=Write something here...'"); 
      map.put(pair[0].trim(), pair[1]); 
     } 
     return map; 
    } 

} 

UI Binder xml:

<p2:MultiLineTextArea ui:field="taMultiLine" styleName="form-control muliLine" 
      moreProperties="spellcheck=false; placeholder=Write something here... " /> 

Risultato html:

<textarea class="form-control muliLine" spellcheck="false" placeholder="Write something here..."></textarea> 
1

Vorrei andare con un framework dell'interfaccia utente che fa tutto questo per te (e altro ancora).

Sto usando GWT-Bootstrap 3 in tutti i miei progetti e sono più che felice a questo proposito: https://github.com/gwtbootstrap3/gwtbootstrap3

Se non sai bootstrap è meglio passare rapidamente attraverso un libro di bootstrap3 in modo da ora come il sistema Grid e altre cose funzionano. Rispetto all'avvio di gwt-bootstrap 3.

Un altro che puoi guardare è https://github.com/GwtMaterialDesign/gwt-material che è un wrapper per Google Material. Non l'ho usato da solo, ma penso che non sia una cattiva scelta.

+0

placeHolder viene fornito con materiale GWT. –

Problemi correlati