Olá, estou tendo o seguinte problema:
minha action não está sendo executada, algém poderia dar uma dica de como resolver este problema?
Segue o código de meu struts.xml:
<struts><constantname="struts.enable.DynamicMethodInvocation"value="false"/><constantname="struts.devMode"value="true"/><packegename="default"extends="struts-default"><!-- mapeamento das actions da aplicação --><actionname="HelloWorld"class="action.HelloWorldAction"><paramname="method"/><resultname="success">/success.jsp</result></action></packege></struts>
minha action:
packageaction;publicclassHelloWorldAction{privatestaticfinallongserialVersionUID=1L;privateStringmensagem;publicStringtesta()throwsException{this.setMensagem("Hello World com Struts 2");return"SUCCESS";}publicStringgetMensagem(){returnthis.mensagem;}publicvoidsetMensagem(finalStringmensagem){this.mensagem=mensagem;}}
Será que o retorno do mapeamento é Case-Sensitive?
Marcio_Nogueira
Creio que não, pois estava utilizando o retorno tal qual mapeado e a action não executava da mesma forma. A alteração do retorno em caixa-baixa foi para ver se o erro iria persistir.
newbcc
Olá,
ao invés de usar a tag result tente usar esta <forward name="iniciar" path="/pages/contato_form_s.jsp" />. Só para testar realmente.
E quanto a questão do drigo, acredito que não seja por causa da caixa, porque tenho mapamentos desse tipo, caixas trocadas, em um projeto recente. Então acho que ainda não é esse o problema.
Abs!
Marcio_Nogueira
Infelizmente não funcionou, a action continua não executando.
O mapeamento possui algum erro?
newbcc
Oi Marcio,
parece que o seu mapeamento no struts-config está correto. Pelo o quê eu vi, a sua Action tem que herdar de extends ActionSupport
Faz essa herança e tenta novamente.
Opa, e tem outra coisa, na sua Action você tem que sobre-escrever o método public String execute() throws Exception
Abs!
B
bffermino
Olá,
Será que não é a diferença do arquivo XML para o retorno?
Repare que no xml está em minúsculo (success) e no método em maiúsculo (SUCCESS)
newbcc
Não, como disse antes, eu tenho essas diferenças em um projeto recente e não faz nenhuma diferença.
E outra, tem de ser SUCCESS, INPUT ou ERROR. Estes são constantes, e não objeto String, encontradas no framework da versão 2, que é a versão que ele está usando.
Abs!
A
andredecotia
newbcc:
Oi Marcio,
parece que o seu mapeamento no struts-config está correto. Pelo o quê eu vi, a sua Action tem que herdar de
extendsActionSupport
Faz essa herança e tenta novamente.
Opa, e tem outra coisa, na sua Action você tem que sobre-escrever o método
Será que não é a diferença do arquivo XML para o retorno?
Repare que no xml está em minúsculo (success) e no método em maiúsculo (SUCCESS)
Não acredito que faça diferença pois quando você usa SUCCESS na classe action do Struts2 está usando o atributo estático e quando usa
“success” ele sabe que tende linkar com o success…
Corrijam-me se eu estiver errado…
A
andredecotia
Marcio_Nogueira:
Olá, estou tendo o seguinte problema:
minha action não está sendo executada, algém poderia dar uma dica de como resolver este problema?
Segue o código de meu struts.xml:
<struts><constantname="struts.enable.DynamicMethodInvocation"value="false"/><constantname="struts.devMode"value="true"/><packegename="default"extends="struts-default"><!-- mapeamento das actions da aplicação --><actionname="HelloWorld"class="action.HelloWorldAction"><paramname="method"/><resultname="success">/success.jsp</result></action></packege></struts>
minha action:
packageaction;publicclassHelloWorldAction{privatestaticfinallongserialVersionUID=1L;privateStringmensagem;publicStringtesta()throwsException{this.setMensagem("Hello World com Struts 2");return"SUCCESS";}publicStringgetMensagem(){returnthis.mensagem;}publicvoidsetMensagem(finalStringmensagem){this.mensagem=mensagem;}}
Marcio, acredito que você deveria herdar o método execute... Aliás, vc está usando qual versão do Struts?
Marcio_Nogueira
Segue a alteração feita na minha action, mas o problema continua, ou seja, a action não é executada.
packageaction;importcom.opensymphony.xwork2.ActionSupport;publicclassHelloWorldActionextendsActionSupport{privatestaticfinallongserialVersionUID=1L;privateStringmensagem;publicStringexecute()throwsException{setMensagem(mensagem="Olá mundo com Struts 2");return"SUCCESS";}publicStringgetMensagem(){returnthis.mensagem;}publicvoidsetMensagem(finalStringmensagem){this.mensagem=mensagem;}}
<?xml version="1.0" encoding="UTF-8"?><struts><constantname="struts.enable.DynamicMethodInvocation"value="true"/><constantname="struts.devMode"value="true"/><packegename="action"extends="struts-default"><!-- mapeamento das actions da aplicação --><actionname="helloworld"class="action.HelloWorldAction"method="execute"><s:paramname="method"/><resulttype="success">/success.jsp</result></action></packege></struts>
aquino.vale
coloque em cima da função que vc quer chamar.use a anotação @Action somente para Structs2 e tenta novamente, lembrando que os arquivos .jsp devem ficar dentro da pasta content, caso fiquem na pasta principal utilizar a barra invertida…