[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

Messages posted by: Daniel Lima  XML
Profile for Daniel Lima -> Messages posted by Daniel Lima [16] Go to Page: 1, 2 Next 
Author Message
É verdade, esse contexto retornado é o da aplicação e não o da sessão. Na verdade daria pra fazer o que você quer usando filtro, por exemplo:
Code:
 public class LoggedUserFilter implements Filter {
 
     @Override
     public void destroy() {
     }
 
     @Override
     public String filter(InvocationChain chain) throws Exception {
         Action action = chain.getAction();
 
         Context context = action.getSession();
 
         Object obj = context.getAttribute(BaseLoginAction.USER_KEY);
 
         // agora faz o que vc quiser com o usuario...
 
         return chain.invoke();
     }
 }
 

Bom, depende de como você faz o login. Se você usa o setUserSession(someUserObj) deveria funcionar.
O Hibernate 4 mudou a forma de como se obtém a SessionFactory. O HibernateFilter deve estar utilizando um método antigo que não é mais suportado por essa versão do Hibernate.
Para pegar o usuário logado você pode usar o código abaixo, mas se você quer é auditoria e já usa o Hibernate, então é melhor o Envers (http://www.jboss.org/envers) que é próprio pra isso.

Code:
ApplicationManager.getApplication().getAttribute(BaseLoginAction.USER_KEY)
Oi Robert, bacana. Na verdade a minha dúvida era como utilizar a taglib do menta, uma vez que o Maven nomeia os jars com nome+versão. Então pra resolver meu problema a solução foi declarar a taglib da seguinte forma:
Code:
<%@ taglib uri="http://www.mentaframework.org/tags-mtw/" prefix="mtw" %>
 
Falando em aplicação de referência, eu já tentei baixar várias vezes pelo svn mas não consegui, não sei se por problema na minha rede ou no host do código. Tem algum lugar onde eu possa baixar o zip da aplicação.

Minha idéia inicial era realmente ver como estava configurado na aplicação de referência.
Senhores, como utilizar o Mentawai com o Maven no Eclipe? Já li todos os posts a respeito no fórum mas todos antigos. Minha principal dúvida fica por conta do uso da taglib do menta. Seguindo esse tópico já consegui configurar o projeto e gerar um war funcional, com o jar do mentawai sem a numeração, mas em desenvolvimento, o Eclipse reclama que não reconhece as tags do Mentawai. E aí, como usar? Alguém tem alguma idéia?


Senhores o que aconteceu com o forum? Porque está tudo abandonado, cheio de spam, várias threads sem resposta. O que houve???

saoj wrote:

Sim, sim. Ela é baseada na versão anterior com algumas mudanças de API, por isso a nova major version. Vai com tudo, usa a applicacao de referencia e qualquer duvida posta aqui.
 

O que realmente mudou nessa versão saoj? Tem alguma lista de mudanças da versão anterior pra esta?

boaglio wrote:

...

org.mentawai.tag.LoopTag: Tag para loopar itens de uma Collection qualquer!

(Coming soon...)

 


Ô rapaz isso ia ser bom, estou tentado fazer uma tag parecida. Já li o fonte da LoopTag mas confesso que não entendi muita coisa.
Senhores reativando o tópico. Mentabeans não funciona com o MultiApplicationManager. Alguém já passou por isso e encontrou uma solução?

Silvio Pereira wrote:
Fiz o seguinte teste: Esqueci do MultiApplicationManager e parti para apenas um ApplicationManager.

Resultado -> Funcionou. Depois verifico com mais afinco o problema com o MultiApplicationManager e posto no fórum. 

spinow wrote:

request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
 


Funfa legal, mas e na action? Como ficaria?


vlw! 


Faz assim!
Code:
HttpServletRequest request = ( (SessionContext) session).getRequest();

leandrosilvaferreira wrote:
Fala Pessoal.

Estou com um problema usando Hibernate 3 + Annottations + Mentawai.

O Hibernate 3, conforme descrito na referencia :
http://www.hibernate.org/hib_docs/v3/reference/en/html/performance.html#performance-fetching-proxies

por padrao, ao contrario do hibernate 2, carrega todas as associações one-to-one com lazy=true, usando o CGLib para criar uma instância do objeto em forma de proxy, onde segundo a especificação, somente quando qualquer um dos métodos acessores deste objeto for acessado pela primeira vez é que o hibernate então faria o select no banco e popularia o objeto.

Até então, a instância deste objeto ficaria como algo do tipo :

PaisVO$$EnhancerByCGLIB$$880d5b28

e com todos os atributos NULL, menos o id a principio.

Bom, isso é o que seria pra acontecer, mas no meu caso, quando acesso o método do objeto carregado, ele não está fazendo o select no banco e populando os atributos antes de me retornar o valor, e sim já me retorna direto NULL.

A única forma que consegui resolver isso, é no mapeamento das classes, colocar a anotação @Proxy conforme abaixo :

PaisVO :
Code:
 	@Entity
 	@Table(name = "pais")
 	@SequenceGenerator(name="pais_sequence", sequenceName = "pais_sequence", allocationSize = 1)
 	@Proxy (lazy=false)
 	public class PaisVO implements Serializable {
 		.....
 	}
 


desta forma, ele desabilita o proxy, e já carrega de uma vez o objeto principal e seus relacionados, porém, em questões de performace, isso é um desastre, uma vez que ficará carregando objetos, leia-se acesso a banco, que não serão necessariamente utilizados.

Procurei bastante, e achei vários problemas semelhantes na utilização de Spring com Hibernate, mas nada que me clareou as idéias a ponto de resolver o problema.

Aqui no forum, econtrei um post até parecido com meu problema, mas que também não ajudou muito :
http://forum.mentaframework.org/posts/list/174.page

Gostaria de uma ajuda dos desenvolvedores do HibernateFilter do mentawai, para um esclarecimento se este problema foi levado em consideração no seu desenvolvimento.

Abaixo segue as configurações das minhas classes caso alguém queira dar uma olhada pra me ajudar :

ApplicationManager :
Code:
 	public void init(Context application) {
 		sessionFactory = ConfigSessionFactory.getInstance().getSessionFactory();
 		ioc("session", Session.class, REQUEST);
 		ioc("transaction",HibernateTransaction.class, REQUEST);
 		ioc("paisDao", PaisImpDAO.class);
 		ioc("estadoDao", EstadoImpDAO.class);
 		ioc("clienteDao", ClienteImpDAO.class);
 		ioc("usuarioDao", UsuarioImpDAO.class);
 	}
 	
 	public void loadActions() {
 		List<Filter> commons = new ArrayList<Filter>();
 		commons.add(new ExceptionFilter());
 		commons.add(new IoCFilter());
 		commons.add(new InjectionFilter());
 		commons.add(new OutputFilter());
 		commons.add(new HibernateFilter(sessionFactory));
 		commons.add(new DIFilter());
 		commons.add(new TransactionFilter(ACOES_COMITAVEIS));
 		commons.add(new AuthenticationFilter());
 		addGlobalFilter(commons);
 		
 		di("session", Session.class);
 		di("transaction",HibernateTransaction.class);
 		
 		/**
 		* Estado
 		*/
 		ac = action(EstadoAction.class)
 			.fwdOk("/jsp/tabelas/EstadoCadastro.jsp")
 			.fwdError("/jsp/tabelas/EstadoCadastro.jsp");
 		ac.on(ERROR, "add", new Chain(ac))
 		  .addFilter(new EstadoActionValidator())
 		  .addFilter(new VOFilter(EstadoVO.class,"estadoVO"))
 		  .addFilter(new VOFilter(PaisVO.class, "paisidPais"));
 	}
 


EstadoService :

Code:
 	public Serializable add() throws Exception {
 		
 		//A instância da classe PaisVO abaixo é carregada através do método loadById do DAO,
 		//o qual utiliza-se do 'session.load()' e retorna uma instância como PaisVO$$EnhancerByCGLIB$$880d5b28
 		//e todos seus atributos ficam como NULL, e ao persistir o objeto estadoVO usando o método
 		// insert do DAO, ele dá a excessão 
                // not-null property references a null or transient value
                // no atributo Pais da classe EstadoVO
 		PaisVO paisVO = paisDao.loadById(estadoVO.getPais().getIdPais());
 		
 		estadoVO.setPais(paisVO);
 		return estadoDao.insert(estadoVO);
 	}
 


EstadoImpDAO :
Code:
 	public class EstadoImpDAO extends HibernateGenericDAO<EstadoVO> implements EstadoDAO {
 	    public EstadoImpDAO() {
 	      super(EstadoVO.class);
 	}
 


HibernateGenericDAO :
Code:
 	public class HibernateGenericDAO<T> implements BaseDao<T> {
 	     
 	     protected Class<T> objClass = null;
 	     protected Session session = null;
 	     
 	     public HibernateGenericDAO(){
 	     }
 	     
 	     public HibernateGenericDAO(Class<T> objKlass) {
 	         this.setObjectClass(objKlass);
 	     }
 	     
 	     public void setObjectClass(Class<T> objectKlass) {
 	         this.objClass = objectKlass;
 	     }
 	 
 	     public void setSession(Session session) {
 	         this.session = session;
 	     }
 	     
 	     public Session getSession(){
 	    	 return this.session;
 	     }
 	     
 	     public T loadById(Serializable id) throws Exception {
 	    	 return (T) session.load(this.objClass.getName(), id);
 	     }
 		 
 	     public Serializable insert(T obj) throws Exception {
 	         Serializable idGerado = session.save(obj);
 	         return idGerado;
 	     }		 
 	}
 


Obrigado

Leandro Ferreira 


Reacordando o tópico....

Leandro, estou com o mesmo problema. Você achou alguma solução?

IceW0lf wrote:
Cara, ai eh imagem.... vc ta pedindo uma imagem q encontra na pasta..

images/algo.gif

ai vc diz...

/minhaaplicacao/teste/principal.page

vc tem mais um nivel ai o TESTE... as imagens deveria estar dentro de
/minhaaplicacao/teste/images

O que vc pode fazer eh colocar a imagem no nivel do arquivo que a esta chamando CSS e JS...
 


Resolvido, a configuração do diretório da imagem fica no c_config.js, comentei essa configuração lá e configurei no meu template usando a tag do menta, ficou assim:
Code:
c_imagesPath="<mtw:contextPath />/images/";

IceW0lf wrote:
Enviado. 


IceW0lf, brigadão. Consegui adaptar aqui ao meu layout, só tem um problema. Se eu acesso http://localhost:8080/minhaaplicacao/principal.page ou http://localhost:8080/minhaaplicacao/erro.page as setas do menu aparecem normalmente, agora se eu entro um nível, por exemplo http://localhost:8080/minhaaplicacao/teste/principal.page, aí as setas simplesmente somem.

Muito estranho isso, já comparei o html gerado e são exatamente iguais, mas ainda não consegui descobrir o motivo disse aconter. Você tem alguma idéia do que possa ser?

Obs: estou usando os templates do mentawai.
 
Profile for Daniel Lima -> Messages posted by Daniel Lima [16] Go to Page: 1, 2 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team