| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 13:21:06
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Resultado do teste acima referido:
O que foi feito.
- Coloquei o filter(new OutputFilter()); no ApplicationManager.
Com isso - se não estou enganado - ele vai pegar o que vier de formulario e setar no output. Certo ?
Quando eu retorno a página ele imprime tudinho sem problemas que está na stick ? ou que veio do form ? acho que o q veio dos forms.
Mas ao validar usando o meu ClientValidationFilter e retornando que o campo X não foi preenchido ele perde o output correto ? Por isso vem null.
Solução é session mesmo pelo que to vendo. Já que sempre que eu validar os dados o output fica null.
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 13:47:02
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Temporariamente, até a gente implementar aquela opção lá, vc pode fazer um filtro que pega da sticky action e joga no output.
Coloca esse filtro ANTES do filtro de validação que o problema vai estar resolvido.
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 13:56:53
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Seria algo mais ou menos assim ?????
Code:
public class StickFilter extends BaseAction implements Filter {
private ClientPersonVO stickperson;
public StickFilter() {}
public String filter(InvocationChain chain) throws Exception {
Action action = chain.getAction();
Input input = action.getInput();
Output output = action.getOutput();
ClientPersonVO c = getStickperson();
output.setValue("clientPerson", c);
return chain.invoke();
}
private ClientPersonVO getStickperson() {
if (stickperson == null) {
stickperson = new ClientPersonVO();
adhere();
}
return stickperson;
}
public void destroy() {
// TODO Auto-generated method stub
}
public String execute() throws Exception {
// TODO Auto-generated method stub
return null;
}
}
Acho que está errado esse filtro...
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 14:05:54
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Lê a documentação sobre filtros.
Um filtro não tem nada haver com action. São coisas totalmente diferentes!
Filtro é uma coisa muito ridícula de se fazer. Vê lá a documentação!
http://www.mentaframework.org/filters.jsp
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 14:07:45
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Pega a sua action, dá um cast para o tipo dela, pega o que vc quer dela, e coloca no output.
Segue o exemplo abaixo:
Code:
import org.mentawai.core.*;
public class MyFilter implements Filter {
public String filter(InvocationChain chain) throws Exception {
Action action = chain.getAction();
Output output = action.getOutput();
output.setValue("before", "doing something before!");
String result = chain.invoke();
output.setValue("after", "doing something after!");
return result;
}
public void destroy() { }
}
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 14:16:24
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
O filtro eu saquei como fazer sim... a forma simples que vc fez funfa certinho fiz assim... mandei uma data pra ver... etc... na boa
SAOJ wrote:
vc pode fazer um filtro que pega da sticky action e joga no output.
Como que eu pego da sticky action se ela está "embutida" na Action" ?
O lance que eu nao sei como é como dar getStickclient() pra poder colocar no output.
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 15:58:42
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Dentro do filtro vc pega sua action e faz um cast.
Code:
Action a = chain.getAction();
MyAction myAction = (MyAction) a;
output.setValue("carrinhoDeCompra", myAction.getCarrinhoDeCompra);
return chain.invoke();
Não dá para usar o OutputFilter porque esse carinha é feito para ser executado APOS a execução da action e não antes.
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 16:47:42
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Ahhhhhhh agora eu capitei a vossa mensagem amado guru!
Era literalmente pegar a MinhaAction.... putzzzz... Eu lia isso e entendia outra coisa putz grila malzzzz....
Fiz um pequeno teste e realmente funciona perfeitamente, amanha faço uns testes mais precisos e se estiver ok mesmo eu "posto" aki a informando o que foi feito pra que os futuros usuarios possam ter acesso.
Obrigado guru!
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2007 19:16:05
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Segue o procedimento para que possamos pegar a StickyAction e manda-la para o output para que possamos imprimir os dados persistidos.
MinhaAction --> Utilizando Validatable para validar formulários.
Code:
public class ClientAction extends BaseAction implements Validatable {
private ClientVO clientstick;
public ClientVO getClientstick() {
if (clientstick== null) {
clientstick= new ClientVO ();
adhere();
}
return clientstick;
}
/*
* um metodo qualquer que tenha na sua action
* */
public String searchToAddClient() throws Exception {
clientList = clientService.findToAdd(no_cliente);
if (clientList!=null && clientList.size()>0) {
//Opa encontramos gente com nome parecido ou igual, vamos apresentar na tela
output.setValue("clientList", clientList);
return ERRORCLIENT;
} else {
ClientVO c = getStickclient();
c.setNo_cliente(no_cliente);
c.setNo_email(no_email);
return SUCCESS;
}
}
public String getNo_cliente_pai() {
return no_cliente;
}
public void setNo_cliente_pai(String no_cliente) {
this.no_cliente = no_cliente;
}
public void initValidator(Validator val, String innerAction) {
//as validações
}
}
ApplicationManager
Code:
public void loadActions() {
action("/Client", ClientAction.class)
.on(ClientAction.ERRORCLIENT, fwd("paginaParaExibirClientesEncontrados.jsp"))
.on(ClientAction.SUCCESS, fwd("paginaDeCadastrarClientes.jsp"))
//Apos todas as minhas action... bla bla bla
.filter(new StickClientFilter())
.addFilter(new VOFilter(ClientVO.class, "client"))
//Validator --> Este filtro deve estar sempre atrás do outros filtros sticky caso contrário não funcionará.
.filter(new ValidatorFilter())
}
StickClientFiltro
Code:
public class StickClientFilter implements Filter {
public StickClientFilter () {}
public String filter(InvocationChain chain) throws Exception {
Action action = chain.getAction();
Output output = action.getOutput();
Action a = chain.getAction();
ClientAction myAction = (ClientAction) a;
output.setValue("stickclient", myAction.getStickclient());
return chain.invoke();
}
public void destroy() {}
}
Com isso além de persistir os dados da sua sticky vc poderá imprimir em qualquer uma das telas seguintes, qualquer dado armazenado na sua sticky action.
Ou seja... se o seu cadastro tiver 10 telas e a cada etapa vc quizer imprimir qualquer informação de qualquer tela anterior vc poderá.
Lembrando que ao final de todo o processo, após salvar a informação vc deve dar um disjoin() na sua stick.
Acho que é isso... qualquer dúvida estamos ai.
Sérgio, estarei no aguardo sobre a possibilidade de isso já ficar implicito nas proximas versões.
Obrigado e parabéns pela paciência, como todos dizem... tu num dorme nao ? Abraço.
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
|
|