Opa galera!
Seguinte, estou iniciando um projeto usando Struts 2 e estou com o seguinte problema…
Sempre que chamo login.jsp, o servidor diz que não consegue encontrar a action mapeada (“There is no Action mapped for namespace /manterUsuario and action name ManterUsuario.”).
index.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=manterUsuario/ManterUsuario.action">
</head>
<body>
<p>
Carregando ...
</p>
</body>
</html>
struts.xml
<?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" />
<include file="manterusuario.xml"/>
</struts>
manterusuario.xml
<?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>
<package name="manterUsuario" namespace="/manterUsuario" extends="struts-default">
<action name="ManterUsuario" class="org.teste.uc.manterusuario.ManterUsuarioAction">
<result>/WebContent/jsp/teste/manterUsuario.jsp</result>
</action>
</package>
</struts>
Como vc config seu web xml ???
Ex:
<filter-mapping>
<filter-name>contexto</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!-- O filtro struts2 deve ser mapeado por ultimo, pois bloqueia os filtros posteriores -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
ai a chamanda fica /nomeAction.action
[code]
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" 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>Struts Blank</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</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-list>
</web-app>
[/code][/code]
Já consegui configurar…era pau do SunAppServer… :evil:
Valeu!!!
Bom…pra não abrir outro tópico vou usar esse mesmo.
To querendo usar o Validation. Eu tenho que fazer alguma configuração além de criar TesteAction-validation.xml e botar no mesmo diretório que TesteAction?
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>
Teste
</title>
</head>
<body>
<s:form action="Teste" method="post">
<tr>
<td colspan="2">
<s:actionerror />
<s:fielderror />
</td>
</tr>
<s:textfield label="Teste" name="teste"/>
<s:submit value="Testar"/>
</s:form>
</body>
</html>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="teste">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>Funcionou!!!</message>
</field-validator>
</field>
</validators>
package org.teste;
public class TesteAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String teste;
public String getTeste() {
return this.teste;
}
public void setTeste(String teste) {
this.teste = teste;
}
}
<?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>
<package name="teste" namespace="/teste" extends="struts-default">
<action name="Teste" class="org.teste.TesteAction">
<result>/jsp/sucesso.jsp</result>
<result name="input">/jsp/teste.jsp</result>
<result name="error">/jsp/teste.jsp</result>
</action>
</package>
</struts>