[RESOLVIDO] Não consigo configurar struts

EDITADO: Havia esquecido de postar a imagem do projeto com a tela de erro na Action
Existe no site da caelum, um lugar para baixar o exemplo?

Galera,
Peguei a nova apostila fj-21 da caelum, na verdade estava usando a versão anterior, e descobri que no site tinha a nova versão.
Estou no capítulo “Struts 2”.

Comentário: que apostila ótima tanto fj-11 (li) e fj-21.

Mas então galera, é o seguinte, criei o pacote action dentro do projeto chamado “fj21-tarefas” o seguinte arquivo dentro dele:

OlaMundoAction.java

[code]package action;

import javax.xml.ws.Action;

public class OlaMundoAction {
@Action(value = “olaMundoStruts”, results = {
@Result(location = “/olaMundoStruts.jsp”, name = “ok”) }
)
public String execute() {
System.out.println(“Executando a lógica com Struts2”);
return “ok”;
}
}

[/code]

meu arquivo web.xml esta assim:

<?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>fj21-tarefas</display-name> <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> <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> </web-app>

e criei um arquivo dentro da WebContent chamado “olaMundoStruts.jsp” só com html básico.


quanto tiro as tags de filter do struts que estão no web.xml meu index.js (criei para testar o diretorio) funciona, quando retiro ele não funciona mais.

O eclipse aponta erros conforme figura em .

outra dúvida, para o eclipse reconhecer as bibliotecas do strutus eu preciso só colocar os .jar dentro da pasta “WebContent\WEB-INF\lib” ? ou melhor importar pelo assistente do eclipse?

Acho que o problema esta no import, qual seria o correto para ser usado nesta classe?

toquei o import por este:

import org.apache.struts.action.*;

e esta apontado o seguinte erro em baixo da palavra @Action:

Type mismatch: cannot convert from Action to Annotation

[quote=charlesbraw]Acho que o problema esta no import, qual seria o correto para ser usado nesta classe?

toquei o import por este:

import org.apache.struts.action.*;

e esta apontado o seguinte erro em baixo da palavra @Action:

Type mismatch: cannot convert from Action to Annotation[/quote]

Utilize Shift + Ctrl + ‘o’ que ele vai importar somente o nescessário.

[]'s
JL

Fiz isso, porém, ele me da opções várias opções, a que quase eliminou todos erros foi esta.

veja como esta agora

[quote=charlesbraw]Fiz isso, porém, ele me da opções várias opções, a que quase eliminou todos erros foi esta.

veja como esta agora

[/quote]

Tente esse import:

[]'s
JL

fiz estes 2 imports:

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

Parou de acusar erro, porém ainda não consigo acessar a página do olaMundoStruts

Eu não criei um arquivo struts-config.xml, ele é obrigatório?

veja como esta o meu web.xml agora:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<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>

quando acesso a url: http://localhost:8080/fj21-tarefas/olaMundoStruts não estou sendo redirecionado para “olaMundoStruts.jsp”

Ok, mas o que acontece? Alguma mensagem de erro no console?

Quando você baixa o struts ele vem com um projeto em branco (blank)
não me lembro o nome ao certo, algo como struts_blank.war

Importa ele na sua IDE e ele vai todo estruturado com um hello world.
Não precisa perder tempo configurando isso, mas é claro que é bom saber como funciona

bem eu uso o jboss tools para criar projetos com struts e nao tenho problemas nenhum. Veja nesse link como instalar e configurar o jboss no eclipse.
Depois de instalado vc tem a opcao de criar Struts Project
Flw!

charlesbraw de uma olhada nesse link, caso ainda não tenha conseguido fazer funcionar o Struts2:

http://grupohaw.com.br/2010/03/29/problema-para-rodar-o-struts-2/

veja: http://blog.camilolopes.com.br/criando-projeto-struts-no-eclipse-jboss-tools/

flw!

Galera,
Gostaria de agradecer a ajuda de todos.
Consegui configurar o struts (rsrs, legal, combina com o titulo do post)

O problema esta nos .jar, quando coloquei apenas os que foram citados neste tópico.
http://www.guj.com.br/posts/list/200940.java
funcionou!

Para todos aqueles que estão com dificuldades de configurar vou passar como ficaram os códigos:

action.OlaMundoAction.java

package action;
 
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
 
public class OlaMundoAction {
 
    @Action(value = "olaMundoStruts", results = {
            @Result(location = "/olaMundoStruts.jsp", name="ok")
    })
    public String execute(){
        System.out.println("Executando S T R U T S II");
        return "ok";
    }
 
}

struts.xml (fica no /src)

<?xml version="1.0" encoding="UTF-8"  ?>  
 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">  
 <struts>
     <constant name="struts.enable.DynamicMethodInvocation" value="false" />  
     <constant name="struts.devMode" value="false" />  
 </struts>

olaMundoStruts.jsp (fica no WebContent ou um diretorio que você esteja guardando seus .jsp, porém, se tirar do WebContent tem que colocar no caminho certo no OlaMundoAction

[code]

Olá mundo com Struts2!

[/code]

web.xml (dentro do WEB-INF)

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<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>

.jar que adicionei

commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
struts2-convention-plugin-2.1.8.1.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar

Valeu galera, vou poder continuar seguindo o capitulo do struts.

Boa noite a todos eu estou fazendo um projeto do curso fj21 da caelum ola mundo com struts2 eu coloquei os seguintes jars:

commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
struts2-convention-plugin-2.1.8.1.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar

Minha Classe Action está assim:

public class OlaMundoAction{ @Action(value = "olaMundoStruts", results = {//esta dando erro so aqui na action ele não ta aceitando meu result @Result(location = "/olaMundoStruts.jsp", name = "ok") } ) public String execute() { System.out.println("Executando a lógica com Struts2"); return "ok"; }
Meu web xml está assim

<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <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>

meu Strut.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

[/code] Chalesbraw são todos os que voce recomendou... concerteza esta faltando algum no meu projeto aqui quais jars alem desses, que vc usou para aquele projeto funcionar? Por favor mostre todos os seus jars usados para eu ter idéa qual está faltando no meu projeto. :wink: obrigado e boa noite a todos!

Edwin,
Conferi aqui e são esses .jar mesmo. foram os unicos que adicionei no projeto. Claro que já incluem os que estão dentro da pasta do java.
Estou usando o eclipse, fiz o import por ele para configurar o build path.

Observe bem os imports

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

Eu tambem estava vacilando neles.

O seu arquivo .jsp esta criado no diretório? qual erro o programa esta acusando?

Pessoal, estou com o memso problema de alguns de voces!
Estas duas palavras: value e results ficam sublinhadas de vermelho.
Alguem pode me ajudar?!

Estou tendo esse problema também, vou tentar fazer o que nosso amigo criador do tópico fez e se conseguir arrumar repasso o que eu fiz aqui depois…

Pelo que vi, é necessário importar as seguintes jars tb, na nova versao 2.2.3

commons-lang-2.5.jar
asm-3.1.jar

bom… consegui agora…usando o metodo de convencoes do Struts 2 (achei uma maneira um tanto quanto arriscada, ja que é muito propensa a erros).

web.xml ficou assim

<?xml version="1.0" encoding="UTF-8"?> fj21-tarefas struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* index.html index.htm index.jsp default.html default.htm default.jsp

classe action.OlaMundoAction (tem que criar um pacote action, muito importante) ficou assim

package action;

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

public class OlaMundoAction
{
@Action(value = “olaMundoStruts”, results = { //value eh o parametro recebido
@Result(location = “/WEB-INF/content/OlaMundoStruts.jsp”, name = “ok”) }
)
public String execute()
{
System.out.println(“passou aqui execute do OlaMundoAction”);
return “ok”;

}

}
obs: Nao sei se está certo colocar essa linha assim: @Result(location = “/WEB-INF/content/OlaMundoStruts.jsp”, name = “ok”) } mas foi a unica maneira que funcionou

OlaMundoStruts.jsp (necessario criar uma pasta content dentro do WEB-INF e colocar la dentro) ficou assim:

<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>

Insert title here Ola mundo, usando struts2

Olá,

Fazendo o exercício “11.6 - Exercícios: Configurando o Struts 2 e testando a configuração” da página 113 da apostila “caelum-java-web-fj21” em 05/01/2012,
basta seguir os passos corretamente, ignorando o passo 1.d de importar o modelo de tarefas e o DAO, pois não precisa para fazer esse exercício funcionar.

A classe, o Action e o Result podem ficar exatamente assim:
@Action(value = “olaMundoStruts”, results = {
@Result(location = “olaMundoStruts.jsp”, name = “ok”) }
)

sem precisar da barra antes do arquivo .jsp e sem precisar dizer o caminho.

tb não foi preciso criar o arquivo struts.xml dentro do src

Depois de terminar, copie os .jars para dentro do WEB-INF/lib, na base do ctrl+c e ctrl+v mesmo
-commons-fileupload-1.2.1.jar
-commons-io-1.3.2.jar
-freemarker-2.3.15.jar
-ognl-2.7.3.jar
-struts2-convention-plugin-2.1.8.1.jar
-struts2-core-2.1.8.1.jar
-xwork-core-2.1.6.jar
sem precisar no Eclipse utilizar o "Add to Build Path"
pq automaticamente irá para Java Resources -> Libraries -> Web Apps Libraries (dê uma checada!)

Somente funcionou quando eu fui exatamente usar a versão struts-2.1.8.1
Pode baixar em http://archive.apache.org/dist/struts/library/
Acredito que outras versões tb devam funcionar.

Baixando, neste momento, a versão struts-2.3.1, as versões dos .jars são as seguintes:
-commons-fileupload-1.2.2.jar
-commons-io-2.0.1.jar
-freemarker-2.3.18.jar
-ognl-3.0.3.jar
-struts2-convention-plugin-2.3.1.jar
-struts2-core-2.3.1.jar
-xwork-core-2.3.1.jar
então, com esses .jars deram o erro 404.

Não sei pq do errro :frowning:
Algum nova configuração para esses novos .jars, mas que com certeza pode ser resolvido fácil.

  • testei criando o struts.xml, mas continuou sem funcionar.
    Alguém sabe?

Abraço!

Opa, tudo bem?
Baseado na apostila FJ-21 é importante:

1 - Para utilizar o Struts 2.3.1.1 ou 2.3.1.2 é necessário conter as bibliotecas da imagem em anexo.

2 - Após isso é necessário verificar a estrutura de pastas: WebContent / WEB-INF / content / olaMundoStruts.jsp

3 - E acessar a URL descrita: http://localhost:8080/fj21-tarefas/olaMundoStruts
OBS: Ao executar o servidor ele não redirecionará direto para essa URL, exibirá a mensagem ERRO 404. É normal nessa parte da apostila.

Acredito que posteriormente isso irá melhorar ( Tomara, ainda estou lendo! hehehe…)

Mas é isso aí
Abs