-
Notifications
You must be signed in to change notification settings - Fork 15
Initializer
Componente para inicializar os objetos Lazy do Hibernate/JPA na view. Este componente evita o famoso LazyInitializationException ao fazer referência a um objeto lazy na view.
Atributos
| Nome | Valor Padrão | Tipo | Descrição |
|---|---|---|---|
| value | Expression Language | Caso seja informado, inicializa a expressão informada. | |
| entityManager | javax.persistence.EntityManager | Indica o entity manager a ser utilizado. Ao fazer isso a configuração EntityManagerFactory não é necessária. | |
| property | value | String | Indica o atributo do componente pai que será inicializado. Por padrão é inicializado o atributo value. |
Utilização
<h:outputText value="#{bean.entity.lazyAtribute.description}" >
<x:initializer/>
</h:outputText> Para recuperar o entity manager e inicializar o objeto o xpert-framework precisa que seja definido o EntityManagerFactory e que seja devidamente configurado, isso pode ser visto na sessão Configurando o EntityManagerFactory. Essa configuração pode ser ignorada uma vez que definido o EntityManager do componente como mostrado abaixo.
Informando o Entity Manager no initializer
Caso não possua a configuração mencionada, é possível ainda usar o componente informando o Entity Manager. Isso não exige configuração, exige apenas que o esse EntityManager seja informado:
<h:outputText value="#{bean.entity.lazyAtribute.description}" >
<x:initializer entityManager="#{bean.entityManager}"/>
</h:outputText>Inicializar qualquer propriedade do componente pai
Por padrão o initializer busca inicializar o atributo value do componente pai, mas é possível indicar qual atributo do componente pai ele irá processar bastando indicar o atributo property. No exemplo abaixo o atributo header do panel será inicializado:
<p:panel header="#{bean.entity.lazyAtribute.description}" >
<x:initializer property="header"/>
</p:panel> Inicializar qualquer expressão
É possível ainda inicializar qualquer objeto informando a expressão do objeto através do atributo “value”. Isso torna mais dinâmica sua utilização, pois independe do componente pai. A baixo a expressão #{bean.entity.lazyAtribute.description} está sendo informada para ser inicializada:
<x:initializer value="#{bean.entity.lazyAtribute.description}" />
<h:outputText value="#{bean.entity.lazyAtribute.description}" /> O exemplo acima é equivalente a:
<h:outputText value="#{bean.entity.lazyAtribute.description}" >
<x:initializer/>
</h:outputText> Inicializar múltiplas expressões
Outra opção disponível é a inicialização de múltiplas expressões:
<h:outputText value="#{bean.entity.lazyAtribute} - #{bean.entity.lazyAtribute2 }" >
<x:initializer/>
</h:outputText> Xpert-framework
Documentation
- O que é o xpert-framework?
- Dependências
- Configurando o xpert-config.xml
- Classes Utilitárias
- Xpert-Faces
- Introdução
- Conversores
- Componentes JSF
- I18N do Bean validation
- Tratamento de Regra de Negócio com o BusinessException
- Exibindo mensagem com o FacesMessageUtils
- Restrictions
- Consultas dinâmicas com o QueryBuilder
- DAO Genérico - BaseDAO
- DataTable paginado no banco com o LazyDataModelImpl
- Definindo os joins com o JoinBuilder
- Unicidade dos campos com UniqueField
- Criação de relatórios com o FacesJasper
- Artefatos para CRUDs
- Geração de Código (CRUD) com o xpert-maker
- Auditando as entidades com o xpert-audit
- Auditoria de Consultas
- SequenceUpdater - Atualizando as sequences
- Controle de Acesso através do xpert-security
- Autenticação LDAP/ActiveDirectory
- Boas práticas para o mapeamento de entidades
- Possíves problemas ao utilizar o xpert-framework
Criando projeto do archetype
- Introdução
- Arquétipos disponíveis do xpert-framework
- Características de um projeto gerado pelo arquétipo
- Configuração de banco de dados
- Criando um projeto a partir do arquétipo maven
- Estrutura de um projeto gerado a partir do arquétipo maven
Useful links