2010-06-25 6 views
1

Je voudrais savoir comment définir la valeur par défaut pour le champ dans JSF zone de texte, le champ sera vide onFocus. Si l'utilisateur n'entre aucune valeur, il affichera à nouveau la valeur par défaut.Jsf valeur par défaut de textbox

j'ai pu trouver la solution en utilisant JS avec textbox html ordinaire, mais n'a pas pu trouver quoi que ce soit utilisant JSF.

<h:inputText id="DT_INPUT" value="#{examplebean.date}" maxlength="11" size="10" /> 

quelque chose comme

<h:inputText id="DT_INPUT" value="dd-MMM-yyyy" maxlength="11" size="10" /> 

mais comment attacher la valeur réelle de retour à la fève?

Merci, Sai.

+0

Merci pour les différentes suggestions, apprécient votre temps. – Sai

Répondre

2

Je vous recommande de regarder certaines bibliothèques de composants qui ont déjà des composants avec des fonctionnalités nécessaires. Si je comprends bien, c'est un moyen jsf. Voici un exemple de input text with hint.

0
  • vous pouvez définir une valeur initiale à examplebean.date (dans le code java ou le haricot), et il apparaîtra dans le champ texte
  • ce qui fonctionne avec la version HTML brut, travaille avec jsf aussi bien, parce qu'il est transformé en html
  • pour les composants de date, regardez richfaces, primefaces, ICEfaces, etc, pour trinidad composants de calendrier prêt à l'emploi.
+0

J'ai interprété la question différemment. Commander le lien de Roman, qui répond parfaitement à l'exigence que j'ai compris. L'OP demande essentiellement un "filigrane" pour un champ vide :) – BalusC

+0

@BalusC J'ai aussi pensé à cette option (et j'ai vu la suggestion de Roman), mais puisque OP l'a appelé "default", et n'était pas tout à fait clair si valeur doit être soumise, j'ai fourni une interprétation alternative. :) – Bozho

0

Si je comprends bien votre question, votre exemple fonctionne bien comme JSF. Le tag h: implique que vous utilisez déjà JSF. Dans JSF, les composants Écran (dans les termes HTML - Contrôles d'entrée) sont liés à des propriétés de classe Java (ou attributs). Lorsque la page JSF est rendue (Please refer to Debug JSF Life Cycle), les valeurs par défaut ou définies manuellement sont définies (si la demande est étendue).

Les valeurs sont définies et récupérées à l'aide langage Java Expression. Dans votre exemple, value = "# {examplebean.date}", examplebean est votre bean (que vous devriez avoir configuré dans votre faces-config) et la date est l'attribut (pour lequel vous aurez un setter correspondant et getter) - accéder aux propriétés de classe java lors de l'exécution est le plus grand avantage du langage d'expression.

Référez-BalusC messages, Get JSF API, Expression Language dans les sites Sun.

1

Comme une alternative complètement différente sans avoir besoin de bibliothèques de composants, vous pouvez également réaliser ceci avec juste h:outputLabel et une bonne prise de CSS/JS.

JSF:

<h:form id="form"> 
    <h:outputLabel for="inputId" value="dd-MM-yyyy" /> 
    <h:inputText id="inputId" value="#{bean.date}" /> 
</h:form> 

CSS:

#form label { 
    position: absolute; 
    cursor: text; 
    color: gray; 
    padding: 2px; 
} 

JS (en utilisant en fait jQuery car il facilite incroyablement DOM Traversion et manipulation):

$(document).ready(function() { 
    $('#form input').focus(function() { 
     $('label[for=' + $(this).attr('id') + ']').hide(); 
    }).blur(function() { 
     if (!$(this).val().length) $('label[for=' + $(this).attr('id') + ']').show(); 
    }); 
}); 

Voici un live demo (basé sur HTML brut).

Questions connexes