2009-12-10 2 views
6

j'ai fait un peu de lecture et de jouer et j'ai encore quelques questions que j'espérais que quelqu'un pourrait répondre:JSF multiples support haricots sur une seule page

Alors, puis-je utiliser deux ou plusieurs grains de support en une seule page JSF?

<h:intputText value="#{myFirstBean.firstProperty}" /> 
<h:intputText value="#{mySecondBean.secondProperty}" /> 

Si je peux, pourquoi ne pas le faire? (Je suppose que je ne devrais pas, parce que personne ne le fait)

Si je ne peux pas, pourquoi?

En outre, j'ai lu quelque part quelque chose comme "au chargement de la page, le framework instancie le bean backing, et le remplit s'il s'agit d'une publication". Ils disent le bean de support mais je ne peux pas comprendre comment le cadre connait qui bean backing pour instancier.

Répondre

4

Clarifions quelques termes:

  • haricots gérés sont des composants JavaBeans que vous pouvez configurer à l'aide de l'installation de bean géré see
  • support haricots, sont JavaServer Faces gérés haricots qui sont associés à les composants d'interface utilisateur utilisés dans une page particulière see

Alors, oui vous pouvez nous Deux ou plusieurs beans gérés dans une seule page JSF, mais la division des liaisons de composants UI, écouteurs, logique, etc qui sont liés à une page en deux ou plusieurs beans backing est toujours possible mais très indésirable et peut vous causer beaucoup de problèmes et de mauvaises code.

+5

Cette définition de Sun est assez opaque.Je dirais plutôt: un bean backing est une classe Java (model) qui est associée à une vue, un bean géré est une * instance * de cette classe qui est associée à une vue et une portée * certain *. – BalusC

+1

En effet. De nombreux développeurs confondent les deux termes. J'utilise le mot 'backing bean' dans la situation où cette classe est créée à la fin de la page jsf. Pour les autres beans (comme les beans de modèle de données), j'utilise des beans term manage. – cetnar

3

Pourquoi pas? C'est une chose parfaitement légitime à faire. En règle générale, une page doit être associée à un bean (pour une bonne structure), mais si vous voulez, par exemple, afficher l'heure actuelle sur chaque page, vous êtes libre de référencer votre timeBean.currentTime, entre autres (de bien sûr, utiliser include/templating est préférable ici).

+0

J'essaie toujours de comprendre comment le framework décide quels beans instancier lors de l'affichage d'une page dans une requête GET. Je pense qu'il serait correct de demander "quand" le bean est instancié? Je devrais supposer au premier accès. –

+1

Les beans gérés sont créés par cadre quand sont utilisés dans la page affichée. Bien sûr, nous parlons de beans de demande et de beans de session qui ne sont pas encore sortis. – cetnar

1

D'autres questions ont déjà été répondues. Toutefois:

En outre, j'ai lu quelque part quelque chose comme "au chargement de la page, le framework instancierait le bean backing, et le remplirait s'il s'agit d'une publication". Ils disent le bean backing mais je ne comprends pas comment le framework sait quel backing bean instancie.

Les haricots sont résolus par leur nom. Par exemple, #{myFirstBean.firstProperty} recherche le bean nommé 'myFirstBean' (une instance de la classe MyFirstBean). Vous pouvez régler le nom comme dans:

@ManagedBean(name = "foo") 
public class SomeClass { ... } 

Ensuite, vous faire référence à cette via #{foo.firstProperty}.

Questions connexes