Dúvida JSF EL

3 respostas
J

Bom dia todos,
estou começando a aprender JSF e estou com uma dúvida simples.

Criei uma página simples com um formulário onde um dos campos é este:

<h:outputLabel value="Idade: ">
		<h:inputText id="idade" value="#{pessoaBean.pessoa.idade}" />
</h:outputLabel>

pessoaBean é um Managed bean comum que possui uma referência para Pessoa.
pessoa é uma referência á classe Pessoa que eu criei, e idade é um short existente nesta classe.

Gostaria de saber se existe a possibilidade de fazer esta mesma chamada sem necessitar especificar o managedBean pessoaBean, pois reduziria bastante a quantidade a ser digitada, tendo em vista que a classe Pessoa possui muitos campos ligados ao formulário. Idealmente gostaria que ficasse assim:

<h:outputLabel value="Idade: ">
		<h:inputText id="idade" value="#{pessoa.idade}" />
</h:outputLabel>

Tentei fazer pessoa ser um managed bean e adiciona-lo em pessoaBean mas serviu-me apenas para definir um valor default para idade; O codigo EL continuou o mesmo. Ai vai o trecho do meu faces-config.xml:

<managed-bean>
  <managed-bean-name>pessoaBean</managed-bean-name>
  <managed-bean-class>projeto.controladores.PessoaBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
   <property-name>pessoa</property-name>
   <property-class>projeto.basicas.Pessoa</property-class>
   <value>#{pessoa}</value>
  </managed-property>
 </managed-bean>

 <managed-bean>
  <managed-bean-name>pessoa</managed-bean-name>
  <managed-bean-class>projeto.basicas.Pessoa</managed-bean-class>
  <managed-bean-scope>none</managed-bean-scope>
  <managed-property>
   <property-name>nome</property-name>
   <property-class>java.lang.String</property-class>
   <value>João do nada</value>
  </managed-property>
  <managed-property>
   <property-name>idade</property-name>
   <property-class>java.lang.Short</property-class>
   <value>20</value>
  </managed-property>
 </managed-bean>

Não sei se isto é possível mas não custa perguntar,
obrigado

3 Respostas

rdgms

Ae… nossa ficou umpouco confuso…
oque você deseja fazer?
^^

J

rdgms:
Ae… nossa ficou umpouco confuso…
oque você deseja fazer?
^^

Olá ! Desculpe se não expliquei direito, é uma dúvida simples, é so uma questão de saber se da pra simplificar a forma como estou fazendo. Vou tentar explicar denovo.

Tenho um Bean Pessoa , com propriedades nome e idade.
Tenho um ManagedBean chamado PessoaBean com um campo Pessoa.

Então, em uma página formulário cadastroPessoa.xhtml para cadastro de pessoas existem diversos campos , dentre eles o campo nome e idade da pessoa, aqui vai um trecho:

<h:outputLabel value="Idade: "> <h:inputText id="idade" value="#{pessoaBean.pessoa.idade}" /> </h:outputLabel>

E este é um trecho da classe PessoaBean:

public class PessoaBean { private Pessoa pessoa; ...

Como é possível ver no atributo value estou ligando o valor do campo de input direto à propriedade do Bean Pessoa, este que esta dentro do meu ManagedBean PessoaBean.
O código funciona sem problemas, o unico inconveniente que estou achando é porque estou precisando de 3 niveis na chamada com EL (pessoaBean -> pessoa ->idade), quando creio que o normal deveriam ser apenas 2, Ex: #{pessoa.idade} . Gostaria então de saber se é normal isto acontecer e se no código de vocês que são mais experientes isto é uma situação normal.

Estou me preocupando com isso pois minha classe Pessoa possui diversos outros campos além deste (nome,rg,cpf,nascimento,filiação,etc) e consequentemente as chamadas #{pessoaBean.pessoa.algumaCoisa} são um pouco tediosas e poluem mais o código do que seria se houvesse alguma forma de reduzi-la para #{pessoa.algumaCoisa} .

Espero ter sido mais claro , obrigado

rdgms

Olá então isso é absolutamente normal !!
realmente fica umpouco tedioso escrever #{managedbean.bean.atributo}
Mas essa é realmente a maneira “correta” de se fazer… agora entendi que a sua ideia era criar um managedbean pessoa tbm… mas não ha a necessidade de fazer isso (mas é possivel jah que é possivel os managedbeans se comunicarem)

flw… espero ter ajudado e me descupe pela lerdeza em entender a duvida kkk

Criado 7 de março de 2009
Ultima resposta 7 de mar. de 2009
Respostas 3
Participantes 2