já tem um tempo que estou usando Jsf, mas não parei para aprender alguns conceitos básicos, que agora estão me fazendo falta.
Estou trabalhando com facelets, onde tenho o template, a página que usa o template e um monte de componentes que vou adicionando nas páginas que usam o template. Estou tendo alguns problemas, onde em algumas páginas links e ações não funcionam. Acredito que meus problemas estão ligados a forms e views.
Perguntas:
Para que serve a tag <f:view>? E a <f:subView>?
Nessa estrutura que estou utilizando onde tenho que colocar essas tags? Onde coloco os form’s?
Estou colocando os form’s dentro dos componentes, mas continuo com alguns não funcionando.
Pesquisei a respeito pela Web e não achei nada muito claro.
O componente f:view representa o viewroot da árvore de componentes, ele é a raiz da árvore. Com facelets não é necessário utiliza-lo, mesmo não havendo problemas em utiliza-la, mas é preferível não utilizar.
Já o f:subview é um Name Container, ele só é necessário quando você está utilizando-se de includes de páginas dinamicamente, por exemplo. Ele evita que os IDs se repitam na árvore de componentes. No final das contas ele simplesmente concatena o ID dele aos IDs dos componentes internos.
maurenginaldo
Oi Rafael,
no meu caso, criei um monte de componentes próprios do facelets e incluo eles na minha pagina:
<my:nome_componente ...>
Nesse caso eu preciso usar o subView?
Outra dúvida, vejo em alguns exemplos de páginas com facelets que o pessoal começa com a tag html e colocam o composition depois
Acredito que não. Na maioria das vezes você utilizará subviews quando não conseguir garantir que os componentes de um bloco de página terão IDs diferentes dos componentes da página principal, o caso mais comum de utilizar subview é:
Não há diferenças, você só muda a posição onde está declarando as taglibs da página. É aconselhável deixa sempre que possível no inicio.
renanreismartins
rponte, aproveitando o gancho amigo
a tag f:view eu utilizo dentro ou fora do ui:include ?
caso eu tenha CERTEZA que meu include nunca terá nenhum id setado com o mesmo valor dos ids declarados onde a página está sendo incluida tenho que utilizar f:view mesmo assim ?
ouvi dizer também que ter na mesma pagina componentes com value atrelado a propriedades do mb e outros componentes que fazem binding pode gerar problema de ids duplicados é verdade ?
Ex da situação: