[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Messages posted by: Ironlynx  XML
Profile for Ironlynx -> Messages posted by Ironlynx [328] Go to Page: 1, 2, 3  ...  20, 21, 22 Next 
Author Message
Lopes, verificou se vc está passando o caminho completo para o Jasper?
Tem certeza que as condições que vc colocou na sua query são atendidas?
motta, ressucitando o tópico?
Na verdade, se eu não me engano o erro era no web.xml apontando para dois filtros fazendo a mesma coisa.
Essa era a segunda app web que eu tinha feito na vida!(Tá, aterceira eu acabei a pouco de desenvolver, também usando o Menta... )
robertwgil, muito boa a idéia!!!
Não só pela banda, mas também pelo tempo de resposta ao usuário.
No último projeto que fiz(usando o menta), eu tinha um relatório que acessava de mais a base de dados, aí um amigo teve a idéia de criar um cache para tacar os dados mais usados(uns 500KB) em memória, e isso evitou umas 25 chamadas por relatório ao banco.
Sinto falta de algo assim no menta:
memoryObject.create("usuarios",usuarios,true);
ou ainda:
memoryObject.create("usuarios",true,2000);onde 2000 é o tempo de vida do objeto em segundos.
E pegar na action usandoo input.getObject("usuarios");
e eliminar usando algo do tipo:
memoryObject.destroy("usuarios");

Isso serviria para updates, e para listagens temporárias, e outros com tempo variável ao invés de uma session padrão no servidor.
mas vc vai precisar do ID num input da vida...  

É esse o meu problema,pois não dá para simplesmente dar um input.getObject("id") ao menos que eu invente uma tag própria.


eu guardo o bena na session vou para a tela aprensento, edito os dados etc.. clico em salvar... recebo o bean da session... seto UM A UM menos o ID e mando dar um updade, save, persist.. tanto faz...  

Humm...não saquei!
Tu taca na session(digamos no jsp de editar):
session.setAttribute("usuario", usuario);
recebe dentro da Action no método update:
session.getAttribute("usuario");
E seta um a um como???(na verdade, tacando na session ficará disponível para o input, certo?)

eu guardo o bena na session vou para a tela aprensento, edito os dados etc.. clico em salvar... recebo o bean da session... seto UM A UM menos o ID e mando dar um updade, save, persist.. tanto faz...
 

Dá um exemplo(digamos que vc tenha o bean User).Falta isso aqui no mybooks.
Vc taca ele(o seu bean) na session antes de editar?Depois?E quando vc tira ele?Como vc o recupera no seu método de atualização?
Na verdade Ice, eu tava tentando passar o objeto para o caminho da action para receber(tipo UserAction.updateUser.action?+{usuario}),mas não funciona ok.O objeto usuario que eu pûs na action para mostrar a página de edição, funciona OK, e a página é mostrada corretamente com os dados, mas depois de mudar os dados e salvar no update é que não funciona, pois esse objeto usuario não resiste.
Pelo que eu tô lendo, o OVFilter que é capaz de fazer isso?Mas como eu pego o mesmo objeto dentro do meu método updateUser?
Realmente o update não está saindo, pq o objeto não está mantendo o seu estado.Pus isso no meu Action.updateUser:
Code:
 userDAO=(UserDAO)input.getValue("userDAO");
 		User usr = input.getObject(u);
 		System.out.println("Número do Usuário:"+usr.getId());

E o id tá vindo 0(inexistente) o que prova que o objeto não tá sendo passado.
Ice, como eu passo os dados do meu form em um update?(leia-se como eu mantenho o estado do objeto para meu método da action, alguma tag especial para isso???)
Consegui exibir as mudanças no página usando o mtw:bean dessa forma:
Code:
  <form id="update" name="update" method="post" action="<mtw:contextPath />/UserAction.updateUser.action">
         
             <fieldset><legend>Atualização de Usuário</legend>
             <mtw:bean value="usuario">  
             <label for="nome">Nome Completo</label>
             <mtw:input type="text" name="nome" value="" id="nome" size="40" />           
             <br />            
             <label for="username">Nome de Usuário</label>
             <mtw:input type="text" name="username" value="" id="username" size="25" />            
             <br />            
             <label for="empresa">Empresa</label>
             <mtw:input type="text" name="empresa" value="" id="empresa" size="25" />         
             <br />
             <label for="email">E-mail</label>
             <mtw:input type="text" name="email" value="" id="email" size="40" />            
             <br />             
             <label for="telefone">Tel. de Contato</label>
             <mtw:input type="text" name="telefone" value="" id="telefone" size="25" />            
             <br />                   
             <label for="perfil">Perfil(USER,INAT)</label>
             <mtw:input type="text" name="perfil" value="" id="perfil" size="20" maxlength="16" />           
             <br />         
             <label for="senha">Senha </label>
             <mtw:input type="text" name="senha" value="" id="senha" size="20" maxlength="16" />            
             <br />   
             <label for="cpf">CPF </label>
             <mtw:input type="text" name="cpf" value="" id="cpf" size="20" maxlength="14" />
             <br />                    
             </mtw:bean>
             <input type="submit" name="atualizar" id="atualizar" value="Enviar" />                        
             </fieldset>            
         </form>

Mas está acontecendo algo estranho:
Ao mudar um valor de um campo qualquer, por exemplo o perfil de USER para INAT e salvar, eu recebo a página de sucesso, mas na verdade, o usuário NÂO é atualizado.Minha UserAction.update.action:
Code:
 public String updateUser(User u) throws Exception {
 		userDAO=(UserDAO)input.getValue("userDAO");
 		User user = input.getObject(u);
 		userDAO.update(user);
         return SUCCESS;
 	}

No appManager:
Code:
 //UserAction.delete   
 	      action(UserAction.class, "delete")   
 	       .on(SUCCESS, fwd("/adm/excluir-sucesso.jsp"))
 	       .on(ERROR, fwd("/adm/falha.jsp"));
 	    //UserAction.mostrar   
 	      action(UserAction.class, "mostrarUser")   
 	       .on(SUCCESS, fwd("/adm/atualizar-usuario.jsp"))
 	       .on(ERROR, fwd("/adm/falha.jsp"));  
 	    //UserAction.update   
 	      action(UserAction.class, "updateUser")   
 	       .on(SUCCESS, fwd("/adm/user-sucesso.jsp"))
 	       .on(ERROR, fwd("/adm/falha.jsp")); 
 	      filter(new VOFilter(User.class, "user"));

Onde estará o erro, uma vez que da sucesso??
Como que tu quer que ele pega automaticamente se tu seta o value como u.nome ?????  

Nah, isso é só uma das formas que eu tava testando, mas sem valor também não funciona e nada é exibido.
Ice, alguma vez vc conseguiu fazer isso dessa forma?Sem configurar algo extra?
Kd o value ? kd o name ? kd o id? todo e qualquer input deve no mínimo ter esses valores ai, talzez podemos até deixar de fora o ID mas o resto nunca.  

Não funciona!
Fiz assim:
Code:
<mtw:input type="text" name="u.nome" value="u.nome" id="u.nome" size="40" />

E nada.Fiz assim também(considerando que com o objeto no output ele poderia ser pego, não sei como o menta trabalha internamente com as variáveis de instância, se faz introspecção):
Code:
 <mtw:input type="text" name="nome" value="nome" id="nome" size="40" />

E nada dos valores do usuário passado no output serem exibidos!!!
Pessoal, esse comportamento no output da action é normal?
usando a tag <mtw:input type="text" /> eu não consigo exibir nada, mesmo pondo o objeto no output(como postei acima), o que invalida o meu update, pois não dá para atualizar campos vazios.
Se eu uso a tag <mtw:out> para exibir, o objeto é exibido normalmente com seus respectivos campos.O que pode ser???
Resolvi como pegar o ID como dessa forma:
Code:
 <img src="<mtw:contextPath />/img/atualizar.gif"
                      onclick="                   
                     var frm = document.forms[0];
                     frm.action = '<mtw:contextPath />/UserAction.mostrarUser.action?id=${usuario.id}';
                     frm.submit(); "
                 /> 


Mas ainda não resolvi tudo nesse Editar multiAction não.Não consigo exibir os dados pegos no output.Exemplo:
Minha página de editar:
Code:
  <label for="nome">Nome Completo</label>
             <mtw:input type="text" name="u.nome" id="" size="40" />           
             <br />            
             <label for="username">Nome de Usuário</label>
             <mtw:input type="text" name="u.username" id="" size="25" />            
             <br />            
             <label for="empresa">Empresa</label>
             <mtw:input type="text" name="u.empresa" id="" size="25" />         
             <br />
             <label for="email">E-mail</label>
             <mtw:input type="text" name="u.email" id="" size="40" />            
             <br />             
             <label for="telefone">Tel. de Contato</label>
             <mtw:input type="text" name="u.telefone" id="" size="25" />            
             <br />                   
             <label for="perfil">Perfil(USER,INAT)</label>
             <mtw:input type="text" name="u.perfil" id="" size="20" maxlength="16" />           
             <br />         
             <label for="senha">Senha </label>
             <mtw:input type="text" name="u.senha" id="" size="20" maxlength="16" />            
             <br />   
             <label for="cpf">CPF </label>
             <mtw:input type="text" name="u.cpf" id="" size="20" maxlength="14" />
             <br />

E o método que eu jogo esse User no output:
Code:
 public String mostrarUser() throws Exception {
 		 userDAO=(UserDAO)input.getValue("userDAO");
 		 Integer user_id = input.getInt("id");
 		 User u=userDAO.loadById(user_id);
 		   if(u!=null){
 			   output.setValue("u",u);
 			   return SUCCESS;			   
 		   }
 		return ERROR;        
 	 }   


Muito estranho não mostrar os dados!
Resolvi de outra forma como passar o id(muita tentativa e erro):
Code:
 <display:column media="html" title="Editar" style="width: 580px" >		      
                <img src="<mtw:contextPath />/img/atualizar.gif"
                      onclick="                   
                     var frm = document.forms[0];
                     frm.action = '<mtw:contextPath />/UserAction.mostrarUser.action?id=${usuario.id}';
                     frm.submit(); "
                 />                
                 <img src="<mtw:contextPath />/img/nao.gif" 
                 onclick="     
                 if (confirm('Excluir?\n ${usuario.nome}')) {
                     var frm = document.forms[0];
                     frm.action = '<mtw:contextPath />/UserAction.delete.action?id=${usuario.id}';
                     frm.submit();
                  }" />                
  </display:column>

Funciona OK.
GRande dica do ICE e eu aqui perdido no html:
Pus um campo hidden:

<display:column media="html" title="Editar" style="width: 580px" >
<input type="hidden" value="" id="id" name="id" />
<img src="<mtw:contextPath />/img/atualizar.gif"
onclick="
var frm = document.forms[0];
frm.action = '<mtw:contextPath />/UserAction.updateUser.action';
frm['id'].value=${usuario.id};
frm.submit(); "
/>
<img src="<mtw:contextPath />/img/nao.gif"
onclick="
if (confirm('Excluir?\n ${usuario.nome}')) {
var frm = document.forms[0];
frm.action = '<mtw:contextPath />/UserAction.delete.action';
frm['id'].value=${usuario.id};
frm.submit();
}" />
</display:column> 

O único problema é que agora eu passei a receber uma Um erro ocorreu:
org.mentawai.core.InputException

Mas já é um progresso.Vou tentar analisar esse erro.
 
Profile for Ironlynx -> Messages posted by Ironlynx [328] Go to Page: 1, 2, 3  ...  20, 21, 22 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team