| 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.
|
 |
|
|