[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: klarq  XML
Profile for klarq -> Messages posted by klarq [64] Go to Page: 1, 2, 3, 4, 5 Next 
Author Message

boaglio wrote:

klarq wrote:


Eu uso esse método.

Mas fiz o seguinte. Na hora de logar eu fiz assim:
Code:
 setUserSession(usuarioBean);
 ApplicationManager.getApplication().setAttribute(BaseLoginAction.USER_KEY, usuarioBean);

 


Só o método setUserSession é suficiente para gravar o usuário na sessão, não precisa da outra linha q vc fez.

Para buscar esse usuarioBean depois, faça um getUserSession() .  



Então, isso funciona se a sua classe extender BaseAction, mas e se a sua classe não exterder a BaseAction. É possível, de alguma forma, acessar a sessão do usuário?

Como eu comentei, com JSF funciona e eu até ja testei.
O filtro não serve pra mim. Pois teria que mexer em muitas classes para enviar o usuário para as outras camadas.

O interceptor é a melhor maneira que encontrei ate agora.

Mas então não tem como pegar o usuário em uma classe qualquer, como na classe interceptor que mencionei?

No JSF tem esse metodo que ja testei e funciona corretamente:

Code:
FacesContext fc = FacesContext.getCurrentInstance();
 HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
 session.getAttribute("atr")


Não tem algo no mentawai desse tipo?

Daniel Lima wrote:
Bom, depende de como você faz o login. Se você usa o setUserSession(someUserObj) deveria funcionar. 


Eu uso esse método.

Mas fiz o seguinte. Na hora de logar eu fiz assim:
Code:
 setUserSession(usuarioBean);
 ApplicationManager.getApplication().setAttribute(BaseLoginAction.USER_KEY, usuarioBean);


Agora eu consegui pegar ele no interceptor. Mas tem um problema. Um usuário sobrescreve o outro. Acho que isso não é sessão e sim o contexto de aplicação.

É isso mesmo?

ul1sses wrote:
Não seria mais fácil implementar uma classe utilitária de log que seria chamada após o comando desejado.. e salvar na tabela? Pra que complicar? 


Obrigado pela dica, mas se entendi bem é isso que o interceptor está fazendo, não é?

Daniel Lima wrote:
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)
 


Retornou null o código acima...
Fala pessoal,

Tenho um sistema ja em produção e queremos implementar agora um log para todas as inserções e alterações dos usuários.

Como estou usando hibernate pensei em usar o Interceptor, que é uma classe que é chamda toda vez que é chamda um inserções ou alteração

Minha dúvida: como pegar o usuário a partir desse interceptor?

ricardocobain wrote:
Se eu entendi de acordo com a consequencia eu iria para uma JSP diferente ?  


Isso mesmo.
A solução comum seria escrever duas consequence. O que daria muito trabalho.

Então pensei numa consequence em que vc passa como parametro um complemento para colocar na url....
Cara, vc ja viu o log do teu server web...

Pode ser outro problema que gera esse exceção como "permGen".
Nós fizemos o seguinte aqui: criamos nosso forward com a seguinte assinatura:

Code:
new Forward(String url, String complemento);


o complemento é uma String que será adicionada a url de acordo com uma regar de negócio.

O que vc acham?
Imaginem (ou lembrem) a seguinte situação:

Implementamos uma aplicação web com o mentawai e criamos nosso ApplicationManager com suas actions e para cada action suas consequencias. Implantamos essa versão.

Mas agora precisamos que nossas paginas funcionem como estava antes, e em popups ou alguma outra coisa que modificará nosso template (TemplateManager). O que fazer?

Ate onde eu sei teriamos que duplicar os .page e colocar no ApplicationManager mais uma consequencia.

Além disso, teriamos que dizer para nossas 200 actions que existe mais uma possibilidade de consequencia!

Alguém ja pensou em uma solução para isso?

Que tal um Forward dinamico?
Ve se esse link te ajuda:

http://www.mentaframework.org/quick-start.jsp
Fala povo,

Estou querendo passar um array de inteiros para a action com ajax. Tentei passar na url com diz aqui mas não funciona, ex:




Code:
function salvarAlerta(){
    var marcado='?';
    var checkbox = document.getElementsByName("ckecks");  
       
    for (var i=0;i<checkbox.lenght;i++){  
          if (checkbox[i].checked == true){
          marcado = marcado + "arr=" + checkbox[i] + "&";  
         }  
    }
    call = new mtw.request();
    call.onSuccess(
         function nada(trans){
 	      response = new mtw.response(trans);
 	}
    );
    call.setUrl('hospitalAgenda.salvarAlerta.mtw' + marcado);
    call.send();
 }



Alguma dica?
Alguém já teve a ideia de usar GWT e mentawai.

Estive pensando na possibilidade de criar interfaces com o GWT e chamar as actions do mentawai...

Uma linha de pensamento é a desse cara que fez para o Struts 2:

http://cwiki.apache.org/WW/struts-2-gwt.html

Acho que uma classe intermediária entre a acion e o GWT

O que vcs acham?
Pelo que pesquisei essa classe ThreadLocal precisa estar em um sevlet que usará threads para que muitas pessoas acessem ele ao mesmo tempo.

Notei que no mentawai existe a classe Controller que é um servlet, pensei em colocar minha ThreadLocal como um atributo publico e estático nessa classe e no método prepareAction eu atribuo a sessão à ThreadLocal.


Code:
public class Controller extends HttpServlet {
 
     public static final ThreadLocal local = new ThreadLocal();
 
     .....
 
     protected void prepareAction(Action action, HttpServletRequest req, HttpServletResponse res) {
 
         action.setInput(new RequestInput(req));
         action.setOutput(new ResponseOutput(res));
         action.setSession(new SessionContext(req, res));
         action.setApplication(appContext);
         action.setCookies(new CookieContext(req, res));
         action.setLocale(LocaleManager.getLocale(req));
         local.set(req.getSession());
     }


Assim eu pego a sessão de qq lugar...

Q q vcs acham?
Pois é...

Eu Fiz o teste com a SingleInstanceActionConfig, mas da nullpointer.

Eu debuguei o mentawai e o problema parece ser um bug, pois essa SingleInstanceActionConfig na verdade chama a ActionConfig para adicionar a action e é passado um valor null para o paramtre klass que lança a exceção nesta linha da classe ActionConfig:

Code:
      this.dirName = getDirFromClass(klass);


Algum exempro de como coloca-la no ApplicationManager??
 
Profile for klarq -> Messages posted by klarq [64] Go to Page: 1, 2, 3, 4, 5 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team