Erro Struts Apostila FJ-21

12 respostas
fabiojpoli

Bom dia pessoal, estou tentando fazer o exemplo básico da apostila da Caelum, mas está me retorando o seguinte erro:

AVISO: Could not find action or result
There is no Action mapped for namespace / and action name adicionaTarefa. - [unknown location]
	at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
	at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
	at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
	at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:550)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Struts</display-name>
  <welcome-file-list>
    <welcome-file>formulario-tarefas.jsp</welcome-file>
  </welcome-file-list>
  <filter>
  	<filter-name>struts2</filter-name>
	<filter-class>
		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
	</filter-class>
  </filter>
  <filter-mapping>
	<filter-name>struts2</filter-name>
	<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>
AdicionaTarefasAction.java
package classes;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

public class AdicionaTarefasAction {
	private Tarefa tarefa;
	@Action(value="adicionaTarefa", results = {
			@Result(name="ok", location="/tarefa-adicionada.jsp")
	})
	public String execute() {
		new TarefaDAO().adiciona(tarefa);
		return "ok";
	}
	public void setTarefa(Tarefa tarefa) {
		this.tarefa = tarefa;
	}
	public Tarefa getTarefa() {
		return this.tarefa;
	}
}
formulario-tarefas.jsp
<html>
<body>
<h3>Adicionar tarefas</h3>
<form action="adicionaTarefa" method="post">
Descrição: <br />
<textarea name="tarefa.descricao" rows="5" cols="100"></textarea><br />
<input type="submit" value="Adicionar">
</form>
</body>
</html>
TarefaDAO.java
package classes;

public class TarefaDAO {

	public void adiciona(Tarefa tarefa) {
		// TODO Auto-generated method stub
		System.out.println("ok");
	}

}

Estrutura do projeto:
[img]http://i54.tinypic.com/xbwfft.png[/img]

Obrigado!

12 Respostas

denislima

falae amigo…

tenta assim

@Action(value="/adicionaTarefa", results = {   
            @Result(name="ok", location="/tarefa-adicionada.jsp")   
    })

colocando uma barra antes do adicionaTarefa

tenta ae e me fala… abracos

fabiojpoli

denislima:
falae amigo…

tenta assim

@Action(value="/adicionaTarefa", results = {   
            @Result(name="ok", location="/tarefa-adicionada.jsp")   
    })

colocando uma barra antes do adicionaTarefa

tenta ae e me fala… abracos


Olá Denis, obrigado pela resposta, mas infelizmente não funcionou.

Saladinha

@Action(value=“adicionaTarefa”, results = {

@Result(name=“ok”, location="/tarefa-adicionada.jsp")

})

ele chama o /adicionaTarefa no location /tarefa-adiciona.jsp

ai o adicionaTarefa está no formulario-tarefas.jsp?

as “linkagens” estão corretas?

fabiojpoli

Sim, como eu postei no meu código acima.

Que linkagem? Eu postei todo meu codigo, veja se identifica algo errado. Obrigado!

denislima

tenta colocar a / aqui entao “antes do adicona tarefa”:

&lt;form action="/adicionaTarefa" method="post"&gt;   
Descrição: <br />   
&lt;textarea name="tarefa.descricao" rows="5" cols="100"&gt;&lt;/textarea&gt;<br />   
&lt;input type="submit" value="Adicionar"&gt;   
&lt;/form&gt;

tenta ae e me fala

bom se mesmo assim nao der certo a noite eu te ajudo…pois tenho o exemplo de um hello world do struts 2 em casa…

abracos

Saladinha

tarefa-adicionada não está postado

fabiojpoli

denislima:
tenta colocar a / aqui entao “antes do adicona tarefa”:

&lt;form action="/adicionaTarefa" method="post"&gt;   
Descrição: <br />   
&lt;textarea name="tarefa.descricao" rows="5" cols="100"&gt;&lt;/textarea&gt;<br />   
&lt;input type="submit" value="Adicionar"&gt;   
&lt;/form&gt;

tenta ae e me fala

bom se mesmo assim nao der certo a noite eu te ajudo…pois tenho o exemplo de um hello world do struts 2 em casa…

abracos

Nada ainda meu caro. Seria ótimo se pudesse compartilhar este exemplo, se possível com action, pois já fiz funcionar struts, mas sem action.

Obrigado!

fabiojpoli
Saladinha:
Que linkagem? Eu postei todo meu codigo, veja se identifica algo errado. Obrigado!
tarefa-adicionada não está postado
Saladinha, segue o código do tarefa-adicionada.jsp
<html>
<body>
Nova tarefa adicionada com sucesso!
</body>
</html>

Obrigado!

fabiojpoli

Adimiro muito as apostilas da Caelum, são ótimas, mas é engraçado, esse é um de varios assuntos dessa e de outras apostilas que não funciona, não sei se é erro, mas eles sempre omitem uma coisa ou outra, isso dificulta muito no aprendizado.

Busquem no fórum pelas palavras: “erro fj” e “problema fj” que irão encontrar muita coisa.

Não sei, é só minha opinião/sugestão.

Alguém teria um tutorial bem basico com struts usando action no POST de um formulário?

Obrigado!

denislima

fabiojpoli:
Adimiro muito as apostilas da Caelum, são ótimas, mas é engraçado, esse é um de varios assuntos dessa e de outras apostilas que não funciona, não sei se é erro, mas eles sempre omitem uma coisa ou outra, isso dificulta muito no aprendizado.

Busquem no fórum pelas palavras: “erro fj” e “problema fj” que irão encontrar muita coisa.

Não sei, é só minha opinião/sugestão.

Alguém teria um tutorial bem basico com struts usando action no POST de um formulário?

Obrigado!

eae fabio…blz?
cara da uma procurada na net msm… com palavras “tutorial struts” “hello world struts” “introducao struts” vc vai encontrar bastante coisa explicando passo a passo struts com xml ou anotacoes…

ja fiz isso ha um tempo… e consegui achar e roda um exemplos d boa…

tenta ae e me fala… abracos

Saladinha

[b]Tenta coloca o caminho todo no location certinho…

/Web-Content/WEB-INF/tarefa-adicionada.jsp

Tenta, custa nada ;D[/b]

W

Olá amigo. eu estava com esse problema. consegui resolver colocando esses .jars

asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-lang-2.5.jar

além dos que constam na apostila, o código é igual como tá lá rodou tranquilo. valeu.

Criado 15 de fevereiro de 2011
Ultima resposta 15 de jan. de 2012
Respostas 12
Participantes 4