Pessoal,
Estou tentando desenvolver aplicação para fim didatico, a pricípio uma calculadora, utilizando o frameWork Struts 1.3.10
IDE eclipse Galileu
Servidor Apache Tomcat 6.0.20
Me deparei com o seguinte erro no servidor apache Tomcat 6.0.20:
Meu arquivo web.xml é o seguinte:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more...
-->
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Calculadora</display-name>
<!-- Standard Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Meu arquivo struts-config.xml é o seguinte:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<!--
This is a blank Struts configuration file with an example
welcome action/page and other commented sample elements.
..... -->
<struts-config>
<!-- ================================================ Display Name -->
<display-name>Calculadora</display-name>
<!-- ================================================ Description -->
<description>Calculadora</description>
<!-- ================================================ Form Bean Definitions -->
<form-beans>
<form-bean name="calcForm" type="calc.CalculadoraForm">
<form-property name="vlr1" type="java.lang.String"/>
<form-property name="vlr2" type="java.lang.String"/>
</form-bean>
</form-beans>
<!-- ========================================= Global Exception Definitions -->
<global-exceptions>
</global-exceptions>
<global-forwards>
<!-- Default forward to "Welcome" action Demonstrates using index.jsp to forward -->
<forward name="calc" path="/Calc.do"/>
</global-forwards>
<!--=========================================== Action Mapping Definitions -->
<action-mappings>
<!-- Default "Welcome" action Forwards to Welcome.jsp -->
<!-- <action path="/Welcome" forward="/pages/Welcome.jsp"> </action> -->
<!-- Minha action default para pag. Calc.jsp -->
<action
path="/Calc"
forward="/pages/Calc.jsp">
</action>
<action path="/Calc" name="calcForm" type="calc.CalculadoraAction" scope="request" validate="true">
<forward name="resultado" path="/calc.jsp"/>
<forward name="erro" path="/calc.jsp"/>
</action>
</action-mappings>
<controller></controller>
<!-- ======================================== Message Resources Definitions -->
<message-resources parameter="MessageResources"/>
<!--========================== Plug Ins Configuration =====================
Tiles plugin
This plugin initialize .....
-->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/org/apache/struts/validator/validator-rules.xml, /WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
Minha página Calc.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<title>Calculadora</title>
<html:base/>
</head>
<body bgcolor="white">
<html:form action="calc.do" method="post">
Digite valor 1:<html:text name="vlr1" property="name" size="15" /> <br />
Digite valor 2:<html:text name="vlr2" property="name" size="15" /> <br />
<p>
<html:submit >
<bean:message key="button.submit" arg0="+"/>
</html:submit>
<html:submit >
<bean:message key="button.submit" arg0="-"/>
</html:submit>
<html:submit >
<bean:message key="button.submit" arg0="/"/>
</html:submit>
<html:submit >
<bean:message key="button.submit" arg0="*"/>
</html:submit>
<html:cancel />
</p>
<p>
Resultado: ${resultado}
</p>
<p>
<html:errors property="calc.inteiros"/>
<html:errors property="calc.params"/>
<html:errors property="calc.operador"/>
</p>
</html:form>
</body>
</html:html>
Minha Classe ActionForm:
package calc;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class CalculadoraForm extends ActionForm {
/**
*
*/
private static final long serialVersionUID = 234111L;
private String vlr1 = null;
private String vlr2 = null;
private Character op = null;
public void setOperador(Character op){
this.op = op;
}
public void setValor1(String vlr1){
this.vlr1 = vlr1;
}
public void setValor2(String vlr2){
this.vlr2 = vlr2;
}
public Character getOperador(){
return op;
}
public String getValor1(){
return vlr1;
}
public String getValor2(){
return vlr2;
}
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){
ActionErrors errors = new ActionErrors();
try{
Integer.parseInt(getValor1());
Integer.parseInt(getValor2());
}catch(NumberFormatException e){
errors.add("calc.inteiros", new ActionMessage("calc.inteiros"));
}
if ( (getValor1() == null) || (getValor2() == null) || (getOperador() == null ) || (getOperador().equals("")) ) {
errors.add("calc.params", new ActionMessage("calc.params"));
}
return errors;
}
}
Meu Action:
package calc;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class CalculadoraAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
Integer resultado = null;
try{
CalculadoraForm formCalc =(CalculadoraForm)form;
Calculadora calc = new Calculadora();
int num1 = Integer.parseInt(formCalc.getValor1());
int num2 = Integer.parseInt(formCalc.getValor2());
resultado = Integer.valueOf( calc.calcula(num1, formCalc.getOperador(), num2) );
}catch(IllegalArgumentException e){
ActionErrors errors = new ActionErrors();
errors.add("calc.operador", new ActionMessage("calc.operador"));
addErrors(request, errors);
return mapping.findForward("erro");
}
request.setAttribute("resultado", resultado);
return mapping.findForward("resultado");
}
}
Bom segundo o erro: java.lang.IllegalArgumentException: The path of an ForwardConfig cannot be null.
Mas o path do meu FowardConfig pelo que vi está preenchido.
Agradeço desde já a colaboração.