| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 14:42:33
|
leoloko
JavaChild
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline
|
Caros,
Procurei mas não encontrei nada concreto sobre isso, então resolvi postar, vamos lá.
Action
Interceptor
Primeiro gostaria de saber se, mesmo usando annotations, preciso declarar o interceptor no struts.xml?
Independente do caso acima, eu já tentei das duas formas, mas sempre obtenho a mensagem:
struts.xml
Será que alguém poderia me dizer onde estou errando? Ou então postar algum exemplo funcional de interceptor com annotations?
Desde já obrigado.
This message was edited 1 time. Last update was at 18/02/2010 16:08:04
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 15:19:17
|
jyoshiriro
Virtual Machine Man
![[Avatar]](/images/avatar/e0679741969383717173a64cf04e0678.jpg)
Membro desde: 17/06/2009 14:14:39
Mensagens: 587
Offline
|
Amigo,
uma dica: seu código poderia ficar menor.
Assim, a url seria "hello-world" (porque sua classe se chama "HelloWorldAction") e o destino seria "/WEB-INF/content/hello-world.jsp" para qualquer resultado.
Quanto ao Interceptor, você deve estender o AbstractInterceptor e não implementar Interceptor.
Para mapear os interceptors para aplicação realmente só via XML, mesmo com o Convention Plugin do Struts 2.1.x. Mas como existe apenas uma meia dúzia de interceptors por aplicação e só há esse trabalho no inicio de um projeto, isso não chega a ser um problema.
|
José Yoshiriro Ajisaka Ramos
OCUP Fundamental / SCJP 6 / SCWCD 5 / SCBCD 5 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 15:33:35
|
leoloko
JavaChild
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline
|
jyoshiriro wrote:Amigo,
uma dica: seu código poderia ficar menor.
Assim, a url seria "hello-world" (porque sua classe se chama "HelloWorldAction") e o destino seria "/WEB-INF/content/hello-world.jsp" para qualquer resultado.
Quanto ao Interceptor, você deve estender o AbstractInterceptor e não implementar Interceptor.
Para mapear os interceptors para aplicação realmente só via XML, mesmo com o Convention Plugin do Struts 2.1.x. Mas como existe apenas uma meia dúzia de interceptors por aplicação e só há esse trabalho no inicio de um projeto, isso não chega a ser um problema.
Opa valew pelas dicas, realmente fica mais prático desta forma, mas o interceptor ainda não rolou, meus códigos estão assim:
Action
Interceptor
struts.xml
Ainda estou obtendo a mensagem Unable to find interceptor class referenced by ref-name loginStack - [unknown location] ao startar o tomcat.
Sei lá mó sinistra essa parada, aparentemente tudo certo, existe alguma anotação a ser feita no interceptor? Creio que não, estou perguntando apenas por desencargo.
Vlw
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 15:49:42
|
jyoshiriro
Virtual Machine Man
![[Avatar]](/images/avatar/e0679741969383717173a64cf04e0678.jpg)
Membro desde: 17/06/2009 14:14:39
Mensagens: 587
Offline
|
Você criou e mapeou o Interceptor num pacote que chamou de "default", certo? Então ou você indica que este é o pacote padrão do seu projeto ou faz com que a Action o use. 1. pacote padrão do seu projeto: setar a propriedade struts.convention.default.parent.package para default (no struts.xml ou no struts.properties) 2. fazer com que a Action o use: usar a anotação @ParentPackage("default") sobre a assinatura da classe. E mais: já que pretende usar o convention plugin, sugiro que seu pacote padrão (no caso, o "default") estenda o "convention-default" e não o "struts-default".
This message was edited 1 time. Last update was at 18/02/2010 15:53:16
|
José Yoshiriro Ajisaka Ramos
OCUP Fundamental / SCJP 6 / SCWCD 5 / SCBCD 5 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/02/2010 16:06:52
|
leoloko
JavaChild
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline
|
jyoshiriro wrote:Você criou e mapeou o Interceptor num pacote que chamou de "default", certo?
Então ou você indica que este é o pacote padrão do seu projeto ou faz com que a Action o use.
1. pacote padrão do seu projeto: setar a propriedade struts.convention.default.parent.package para default (no struts.xml ou no struts.properties)
2. fazer com que a Action o use: usar a anotação @ParentPackage("default") sobre a assinatura da classe.
E mais: já que pretende usar o convention plugin, sugiro que seu pacote padrão (no caso, o "default") estenda o "convention-default" e não o "struts-default".
Mano.... você é o cara... agora ta tudo funcionando direitinho.
Vou postar as classes finais aqui, caso alguma outra pessoa procure um exemplo completinho.
HelloWorldAction.java
LoginCheckInterceptor.java
struts.xml
Obrigado pela ajuda, fica com deus.
T+
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/05/2010 16:48:38
|
ffontouras
Entusiasta Java
![[Avatar]](/images/avatar/e82e2055186ea868171d353798267144.jpg)
Membro desde: 23/01/2010 08:52:44
Mensagens: 16
Localização: São José dos Campos - SP
Offline
|
Caros,
Segui passo-a-passo até uma "cópia" do código acima, porem tenho o erro abaixo a hora que reinicio o tomcat: Unable to find interceptor class referenced by ref-name sessaoStack - [unknown location]
Isso só acontece quando aplico o annotation @InterceptorRef("sessaoStack") na classe action HomeAction.java!!!!!
Segue o código:
Action (HomeAction.java)
Interceptor (LoginInterceptor.java)
Config (struts.xml)
Já vasculhei a net e o forum e estou a 5 horas tentanto resolver este problema.
Se alguem tiver uma luz me passa. Rs
Abraços!
|
Felipe Fontoura
corp: http://www.internetsistemas.com.br
twitter: http://twitter.com/felipefontoura
linkedin: http://br.linkedin.com/in/felipefontoura
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/05/2010 17:40:47
|
jyoshiriro
Virtual Machine Man
![[Avatar]](/images/avatar/e0679741969383717173a64cf04e0678.jpg)
Membro desde: 17/06/2009 14:14:39
Mensagens: 587
Offline
|
Você criou e mapeou o Interceptor num pacote que chamou de "default", certo?
Então ou você indica que este é o pacote padrão do seu projeto ou faz com que a Action o use.
1. pacote padrão do seu projeto: setar a propriedade struts.convention.default.parent.package para default (no struts.xml ou no struts.properties)
2. fazer com que a Action o use: usar a anotação @ParentPackage("default") sobre a assinatura da classe.
|
José Yoshiriro Ajisaka Ramos
OCUP Fundamental / SCJP 6 / SCWCD 5 / SCBCD 5 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/05/2010 13:51:47
|
ffontouras
Entusiasta Java
![[Avatar]](/images/avatar/e82e2055186ea868171d353798267144.jpg)
Membro desde: 23/01/2010 08:52:44
Mensagens: 16
Localização: São José dos Campos - SP
Offline
|
Pessoal apesar de tudo no código estiver certo meu struts.xml estava no lugar errado e o struts não "enchergava". Por isso do erro de package não encontrada.
Abraços!
|
Felipe Fontoura
corp: http://www.internetsistemas.com.br
twitter: http://twitter.com/felipefontoura
linkedin: http://br.linkedin.com/in/felipefontoura
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/02/2011 10:56:15
|
melice
Smalltalk
Membro desde: 21/02/2011 10:36:55
Mensagens: 1
Offline
|
Vi que o tópico é um pouco antigo, mas descobri o problema e quero disponibilizar a solução:
No Eclipse, coloquei o struts.xml no WEB-INF, conforme o tutorial que utilizei dizia para fazer.
Fiz o deploy no tomcat. Cheguei a testar algumas formas diferentes mas o resultado eram os erros: "Unable to find interceptor class referenced by ref-name x - [unknown location]" ou "Unable to locate parent package [x] - [unknown location]".
Obviamente o struts.xml era inserido na pasta WEB-INF na aplicação.
Depois de alguns testes, consegui que funcionasse quando movi o stuts.xml para a pasta "classes".
Portanto, o local correto para inserir o struts.xml no projeto é na pasta src.
Para isso, no Eclipse, botão direito na pasta src > new > Other > General > File. Selecione a pasta src e crie o arquivo struts.xml.
Depois, é só adicionar o conteúdo do struts.xml, "clean" no tomcat, e realizar novamente o deploy.
Abraços.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/04/2011 08:56:40
|
far56
HelloWorld
Membro desde: 09/01/2009 09:28:11
Mensagens: 10
Offline
|
Pessoal segui exatamente essas orientações, mas no meu caso a execução está entrando em loop, exemplo: Entra no método execute da Action1 e depois vai pro interceptor, e dentro do interceptor eu dou um invoke, ele vai pro metodo execute da Action1, e assim por diante, até dá um erro de loop. Alguem tem alguma ideia?
Grato
|
|
|
 |
|
|