Olá Galera,
Alguem de vcs ja conseguir fazer funcionar o Struts2 com action dinamicas, tudo que eu pequei na net nao funciona.
Olha o que eu tenho:
struts.xml
<struts>
<package name="default" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="*Link" method="{1}" class="com.teste.action.LinkAction">
<result name="welcome">/welcome.jsp</result>
</action>
</package>
</struts>
web.xml
<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>
minha classe:
public class LinkAction extends ActionSupport {
public String welcome()
{
return "welcome";
}
}
minha pagina index.jsp
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=welcomeLink.action">
minha pagina welcome.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Welcome Guest.
</body>
</html>
Minhas libs:
commons-beanutils-1.7.0.jar
commons-digester-2.0.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
commons-logging-api-1.1.jar
freemarker-2.3.15.jar
junit-3.8.1.jar
ognl-2.7.3.jar
struts2-codebehind-plugin-2.1.8.1.jar
struts2-convention-plugin-2.1.8.1.jar
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
Ao tentar acessar sempre da o seguinte erro:
LOG:
WARNING: Could not find action or result
There is no Action mapped for namespace / and action name welcomeLink. - [unknown location]
PAGINA:
HTTP Status 404 - There is no Action mapped for namespace / and action name welcomeLink.
Alguem tem alguma ideia do que eu estou fazendo de errado ?
Obrigado,
Rodrigo
Amigo, acredito que talvez ele n esteja sabendo que deve ser chamado o metodo “welcome”.
Ele esta tentando chamar a action welcomeLink e nao welcome.
No struts tente colocar
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
Na action tente fazer assim:
<action name="*Link.*" method="{1}" class="com.teste.action.LinkAction">
<result name="welcome">/welcome.jsp</result>
</action>
Na jsp tente alterar para:
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=welcomeLink.welcome.action">
[quote=rdmardegam]Amigo, acredito que talvez ele n esteja sabendo que deve ser chamado o metodo “welcome”.
Ele esta tentando chamar a action welcomeLink e nao welcome.
No struts tente colocar
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
Na action tente fazer assim:
<action name="*Link.*" method="{1}" class="com.teste.action.LinkAction">
<result name="welcome">/welcome.jsp</result>
</action>
Na jsp tente alterar para:
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=welcomeLink.welcome.action">
[/quote]
Carinha,
Fiz o que vc falou…mesmo assim nao deu certo continua dando o erro:
Pagina:
Messages: There is no Action mapped for namespace / and action name welcomeLink.welcome.
Log:
SEVERE: Could not find action or result
There is no Action mapped for namespace / and action name welcomeLink.welcome. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:177)
- alquem tem alguma ideia ? ou conseguiu fazer funcionar o struts 2 com metodos dinamicos ?
Obrigado,
Rodrigo
[code]
struts2
*.action
[code]
<?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>
<include file="struts-default.xml" />
<package name="default" extends="struts-default">
<action name="Link.*" method="{1}" class="com.teste.action.LinkAction">
<result name="welcome">/welcome.jsp</result>
</action>
</package>
</struts>
//assim a chamada será
Link.metodo.action
[quote=rdmardegam][code]
struts2
*.action
[code]
<?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>
<include file="struts-default.xml" />
<package name="default" extends="struts-default">
<action name="Link.*" method="{1}" class="com.teste.action.LinkAction">
<result name="welcome">/welcome.jsp</result>
</action>
</package>
</struts>
//assim a chamada será
Link.metodo.action[/quote]
Putz…
Na mesma…
Olha o erro:
Messages: There is no Action mapped for namespace / and action name Link.metodo.
Estou anexando o projeto teste sem as libs…
As libs que estou utilizando:
commons-beanutils-1.8.0.jar
commons-digester-1.8.1.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.1.jar
freemarker-2.3.13.jar
junit-3.8.1.jar
ognl-2.6.11.jar
struts2-convention-plugin-2.1.6.jar
struts2-core-2.1.6.jar
struts2-tiles-plugin-2.1.6.jar
tiles-api-2.1.2.jar
tiles-compat-2.1.2.jar
tiles-core-2.1.2.jar
tiles-jsp-2.1.2.jar
tiles-servlet-2.1.2.jar
xwork-2.1.2.jar