2009-10-09 4 views
7

Je dois diriger le focus d'entrée vers un composant texte entrant spécifique lors du chargement de la page (pour permettre la saisie d'une valeur à l'aide d'un lecteur de codes à barres).Réglage de la mise au point sur un texte d'entrée JSF

En HTML pur, j'ajouterais un gestionnaire JavaScript "onload" à l'étiquette de corps, mais il doit y avoir une meilleure façon de le faire dans JSF.

Quel est le « plus propre » façon d'y parvenir pour:

  1. cas « statiques » où le même contrôle reçoit le focus chaque chargement de page.
  2. Cas "dynamiques" où ceci pourrait être un contrôle différent pour chaque chargement de page.

Répondre

7

Question intéressante.

Il n'y a rien de spécial dans JSF pour cela. Vous savez déjà comment faire cela en HTML/Javascript et il n'y a rien de différent que JSF ajoute à cet autre que ses ID fous.

Pour l'accès "statique", vous devez simplement vous assurer que vous spécifiez l'ID JSF complet, par ex. "myform: mydiv: myinput". Ce n'est pas très propre mais si votre page change, il est probable que cet identifiant changera également.

Idéalement, vous auriez un composant JSF que vous imbriqueriez dans votre <h:inputText> qui indiquerait que le focus était requis. Par exemple:

<h:inputText value="#{whatever}"> 
    <my:focusComponent /> 
</h:inputText> 

Techniquement, ce ne serait pas une solution difficile. Le composant trouverait simplement son identifiant et ajouterait du javascript appelant focus(). Seam a quelque chose de similaire avec son composant <s:defaultAction/> qui fait un lien ou un bouton répondre à la touche Entrée. Vous voudrez peut-être vérifier le code source de cela.

+0

J'aime votre solution dynamique. Il a quelques limitations si le contrôle pour se concentrer se déplace partout, mais cela suffit dans ma situation. Merci! – Timo

+0

ID JSF ne sont pas fous si vous affectez votre propre. :-) Ne les laissez pas se débrouiller tout seuls! En remarque, Apple iDevices semble ignorer les tentatives de mise au point pour l'entrée pendant le chargement de la fenêtre depuis javascript. Fait sens du contexte de la navigation Web générique, mais très irritant lorsque vous essayez de construire des applications Web personnalisées (en particulier ceux qui utilisent des scanners de codes à barres pour la saisie). –

Questions connexes