2012-04-12 4 views
4

So hat mein Team JSF und wir verwenden, um eine EL-Anweisung im Wert eines Eingabefeldes zu lesen, funktionieren gut, aber standardmäßig haben wir unseren Wert als das, was sollte in das Feld gefüllt werden. Wie kann ich einen Standardwert für die Eingabe festlegen, während die EL-Anweisung noch funktioniert? Beispiel:Set Standardwert Eingabefeld bei der Verwendung von EL-Anweisung Wert lesen

<h:inputText value="#{registrationBean.firstName}" styleClass="formEle"/> 

Ich versuchte

<h:inputText value="#{registrationBean.firstName}First Name" styleClass="formEle"/> 

aber bricht die Verbindung ab, wenn wir vorlegen. Irgendwelche Ideen?

Antwort

10

Sie suchen nach etwas, das ein „Wasserzeichen“ oder „Platzhalter“ genannt wird. Bei niedrigem Niveau, das in diesen Tage sind normalerweise auf dem HTML5 placeholder Attribut erfolgen:

<input type="text" placeholder="First Name" /> 

Dies funktioniert natürlich nur in Browsern HTML5 unterstützen und auch dann nur mit JSF-Komponenten das neue HTML5-Attribut unterstützt. Der Standard JSF <h:inputText> unterstützt dies (nativ) noch nicht. Sie müssen nach Komponentenbibliotheken von Drittanbietern suchen, die dies unterstützen. Unter sie ist PrimeFaces mit seinem <p:watermark>:

<h:inputText id="firstName" value="#{registrationBean.firstName}" /> 
<p:watermark for="firstName" value="First Name" /> 

Wenn PrimeFaces mit aus irgendeinem Grunde nicht möglich ist, müssen Sie es neu zu erfinden, sie in Geschmack einer benutzerdefinierte Komponente und/oder ein benutzerdefiniertes Stück JS/jQuery Genau wie <p:watermark> geht es unter die Decke.

-1

Wenn Sie sich entscheiden PrimeFaces verwenden Sie nicht erforderlich sind, ein Wasserzeichen zu verwenden, siehe Beispiel unten:

<h:form> 
    <p:panel id="panel" header="Client Details" style="margin-bottom:10px;"> 
    <p:messages id="messages" /> 
    <h:panelGrid columns="2"> 

     <h:outputLabel for="firstName" value="First Name" /> 
     <p:inputText id="firstName" value="#{clientlistpagebean.selectedFieldClient.firstName}" required="true" /> 

     <p:outputLabel for="lastName" value="Last Name" /> 
     <p:inputText id="lastName" value="#{clientlistpagebean.selectedFieldClient.lastName}" required="true" /> 

    </h:panelGrid> 
    </p:panel> 

    <p:commandButton value="Submit" update="panel" style="margin-right:20px;" /> 
</h:form> 
1

Die HTML-Umbauten von JSF gemacht durch JavaScript modifiziert werden nach dem Laden eines Platzhalter attibute für HTML5 Einfügen :

<script> 
    window.onload = function() { 
    document.getElementById('email').setAttribute("placeholder", "Email"); 
    document.getElementById('pwd').setAttribute("placeholder", "Password"); 
    } 
</script> 
2

Sie könnten Standardwert von <h:inputText> in Ihrem Backing Bean in PostConstrut Phase definieren.

@ManagedBean(name="registrationBean") 
public class RegistrationBean{ 

    private String firstName; 

    @PostConstruct 
    public void init(){ 
     firstName = "your default value"; 
    } 

} 

Nach Seite angezeigt Schaffung Wert in h:inputText wird sein, wie Sie in Backing Bean definiert. Es ist eine Art von Arbeit ohne irgendeine Bibliothek von Dritten vielleicht wird es jemandem helfen.