[RESOVILDO]Strtuts2 Apostila fj21 caelum

23 respostas
I

Boa noite a todos, enquanto eu estou estudando a apostila fj21 da caelum os erros vao aparecendo agora no momento estou no primeiro exercicios de formulario de tarefas 11.8 da apostila...

fiz tudo bonitinho, mas acontece o seguinte erro
HTTP Status 404 - There is no Action mapped for namespace / and action name adicionaTarefa.

type Status report

message There is no Action mapped for namespace / and action name adicionaTarefa.

description The requested resource (There is no Action mapped for namespace / and action name adicionaTarefa.) is not available.

Apache Tomcat/7.0.21
Alguem poderia me dar uma ajuda?

23 Respostas

CharlesAlves

bem o erro que ele está apresentando é que não consegue localizar a action adicionarTarefa, acho que você deve dar uma olhada na segunda parte da atividade, verificar se realmente fez o mapeamento da action Tarefa para o endereco adicionaTarefa e caso não consiga resolver o seu problema com isso postar o codigo da action aqui pra dar uma olhada, esse problema provavelmente é de mapeamento.

I

Charles, vou postar todos os meus códigos para ver se tem algo de errado:

Action AdicionaTarefa
package br.com.caelum.tarefas.action;

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

import br.com.caelum.tarefas.dao.TarefaDAO;
import br.com.caelum.tarefas.modelo.Tarefa;

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;
	}

}
mapeamento: Web.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_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>fj21-tarefas</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.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>
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>
J

Bom , eu tbm , estou estudando Struts2 com a apostila da Caelum .

Me deparei com esse erro também , tenta lá na sua Action mudar o location para :

location = “tarefa-adicionada.jsp”

Tira a barra / .

I

Ainda dando o mesmo erro!!!

como foi que você resolveu seu problema???

J

Bom , eu não sei qual pode ser seu erro , mais vou chutar:

Pelo oque eu estava lendo na apostial , o package das Actions é OBRIGATÓRIO ter action , por exemplo : (br.com.teste.action) , a sua action tem que estar em um pacote que tenha action ou actions acho no final ,tem que dar uma olhada na apostila.

E a sua linha ficou assim né :

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

Se vc modificou certinho tudo que falei ai em cima e ainda continua dando pau , ai eu não sei…

CharlesAlves

good news, achei o erro =D

a sua classe AdicionaTarefasAction tem que extender ActionSuport, por isso mesmo mapeando corretamente não estava dando certo o seu código, vou te contar deu trabalho pra achar xD coloca assim que vai dar certo

public class AdicionaTarefasAction extends ActionSupport {
J

Bom , pelo que sei , ActionSupport seria para validação , e não é esse o caso :confused:

CharlesAlves

É depois que você falou fui dar mais uma olhada e vi que você tem razão, mas isso é somente isto que está diferente na minha e ela está funcionando corretamente ‘’/

vou voltar a procurar o erro xD

CharlesAlves

Igor qual é a URL que você está usando e está lançando este erro!?

J

É oque eu pensei também , pode ser que ele esteja acessando URL errada…

Se possivel da uma passada no mu tópico , tbm estou mexendo com Struts2 e estou com um problemão :confused: vlw.

(o nome do tópico é Struts2 Caelum ) ou algo parecido :smiley:

I

Bom dia a todos, primeiro quero agradecer a quem esta tentando me ajudar... :D
Vamos lá

CharlesAlves:
Igor qual é a URL que você está usando e está lançando este erro!?

Vou postar o procedimento que estou fazendo aqui na minha aplicação:

acesso o formulario jsp para adicionar tarefa:
localhost:8080/fj21-tarefas/formulario-tarefas.jsp

quando eu clico no botao de submit da o erro...
[url]http://imageshack.us/photo/my-images/43/erro1g.jpg/[/url]

então não sei aonde deve estar o erro, se é no formulario-tarefas. passado como action="adicionaTarefa" ou sei lá... ja tentei diversas coisas e nada rola... :( (só não desanimei, pq tenho que aprender a lida com isso senaum gg)

então eu acredito que o erro deve estar no meu 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>
ou não sei mais aonde posso estar errando, se alguem tiver esse projeto até essa parte e puder compartilhar, eu agradeceria.... pois gostaria de comparar..

vou deixar 1 print do meu projeto
[url]http://imageshack.us/photo/my-images/801/erro2i.jpg/[/url]

O que vocês acham?

J

HAHÁAAAAAAAA

eu “acho” que achei o erro , olhando para o print do seu projeto , parece que o formulario-tarefas.jsp está fora da pasta Content.

Dá uma checada e fala pra nós ai :smiley:

I

JoaoMarques:
HAHÁAAAAAAAA

eu “acho” que achei o erro , olhando para o print do seu projeto , parece que o formulario-tarefas.jsp está fora da pasta Content.

Dá uma checada e fala pra nós ai :D


pior que não é esse o problema joão eu ja testei ele tanto dentro da content como fora dela como você viu no print e continua o mesmo erro XD
poderia ser algo com as bibliotecas do struts2? acho que não porque o olaMundo funcionou corretamente :frowning:

J

Bom vc está tomando o 404 né?

E só pra conferir lá na action no Results você tirou a barra no location né ? :smiley:

Correto = “tarefa-adicionada.jsp”

Errado = “/tarefa-adicionada.jsp”

Só da uma verificada no link que o submit te leva …

CharlesAlves

Igor se der faz o seguinte, upa esse teu arquivo pra algum lugar pra que a gente possa ver nas nossas maquinas?!

pra ficar mais fácil vou deixar essa pasta compartilhada do 4shared a disposição http://www.4shared.com/folder/CwoegX-p/Compartilhar.html

I

postei o rar do meu projeto completo lá…
http://www.4shared.com/file/nfCOFXyl/fj21-tarefas.html

CharlesAlves

Igor logo quando coloquei o teu projeto pra rodar verifiquei que estava havendo erros na hora de fazer o deploy do projeto no tomCat então procurei o erro e nada, e quando fui olhar na pasta lib comparando com a do projeto que tenho aqui veio a surpresa, tah faltando uma delas eu coloquei no 4share pra você pegar e fazer o teste…

http://www.4shared.com/file/FcQ9-8md/asm-commons-31.html

depois dá o feedback pra saber se deu certo ou não, aqui ficou funcionando tudo certo xD

I

poderia me dizer qual é essa lib que estava faltando???
assim que chegar em casa irei testar
Desde já agradeço pela ajuda

CharlesAlves

Eu a coloquei no 4shared pra tu, mas é a asm-commons que está faltando

I

hum…
OK charles, muito obrigado, o restante do projeto eu estava fazendo de maneira correta?
:wink:

CharlesAlves

Sim estava sim, eu só precisei criar um novo projeto, acho que por tu está usando versões do eclipse e tomCat mais atuais que as minhas por isto não deu totalmente certo de inicio, ai criei outro projeto e adicionei todas as suas classes, lib e .jsp e modifiquei o ConnectionFactory porque fiz os exemplos utilizando o postgres.
Ai foi quando ele começou a dar um erro estranho na hora de fazer o deploy, mais uma vez verifiquei a action e se os imports que estavam sendo feitos nela, não achei nada de diferente e fui verificar as livrarias e estava faltando essa, foi só adicionar e os redirecionamentos ficaram todos OK, adicionei tarefas, verifiquei o olaMundoStruts e consegui acessar a tudo sem problemas…

I

CharlesAlves:
Sim estava sim, eu só precisei criar um novo projeto, acho que por tu está usando versões do eclipse e tomCat mais atuais que as minhas por isto não deu totalmente certo de inicio, ai criei outro projeto e adicionei todas as suas classes, lib e .jsp e modifiquei o ConnectionFactory porque fiz os exemplos utilizando o postgres.
Ai foi quando ele começou a dar um erro estranho na hora de fazer o deploy, mais uma vez verifiquei a action e se os imports que estavam sendo feitos nela, não achei nada de diferente e fui verificar as livrarias e estava faltando essa, foi só adicionar e os redirecionamentos ficaram todos OK, adicionei tarefas, verifiquei o olaMundoStruts e consegui acessar a tudo sem problemas…

Charles, gostaria de agradecer atenção que você teve em me ajudar, era a falta da lib mesmo…
\o/

R

Pois é. O pessoal da Caelum fez uma ótima apostila, mas mesmo depois de revisar o material faltou uns pequenos detalhes para ajudar neste exercício.

Download da apostila fj21 revisada
Além da falta do material de apoio “projeto-tarefas.zip” disponível para download (que está no link no nome do arquivo, obrigado ao usuário kirill), eu só consegui rodar tudo após adicionar na pasta WEB-INF/lib três outros .jar que não constam na apostila nem no arquivo da apostila:

  • asm-x.x.jar
  • asm-commons-x.x.jar
  • commons-lang-x.x.jar

OBS.: nos arquivos acima o “x” representa qualquer versão que estiver usando.

Portanto são 12 arquivos da pasta lib do Struts2 e não 9 os necessários para rodar direito. (estes 3 arquivos vem com o Struts2. Clique para fazer o download só dos arquivos “Essential dependencies only”)

Então se você está estudando a apostila da CAELUM e cair aqui espero que isso ajude você a resolver os exercícios. O resto a apostila revisada até a data deste post traz tudo certinho para fazer o exercício

Criado 11 de outubro de 2011
Ultima resposta 1 de nov. de 2011
Respostas 23
Participantes 4