Não estou conseguindo utilizar o Struts 2 com anotações no netbeans 6.9.1

3 respostas
Helder8

Olá pessoal preciso de ajuda!!!

Vou declarar abaixo toda a configuração do Strus 2 que eu fiz no netbeans 6.9.1 e o erro que está dando:

Nome do projeto Struts2

Segue abaixo a imagem da estrutura do projeto

Agora vou escrever como está cada classe:

web.xml

<?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>
        <init-param>
            <param-name>actionPackages</param-name>
            <param-value>br.com.jm.s2a.calculator.action</param-value>
        </init-param>
    </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>

index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
      <script type="text/javascript">
          <!--
                location.href="/s2a/calculator.action";
          -->
      </script>
  </body>
</html>

main.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="s"  uri="/struts-tags"%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Entre com os valores para calcular</title>
    </head>
    <body>
        <s:form action="calculator!calculate" method="post">
            <s:textfield label="Initial Ammount" name="request.ammount"/>
            <s:textfield label="Number of Parcles" name="request.numberOfParcels"/>
            <s:textfield label="Interest" name="request.interest"/>
            <s:submit/>
        </s:form>
    </body>
</html>

result.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="s"  uri="/struts-tags"%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Calculation Rersult</title>
    </head>
    <body>
        Result: <s:text name="%{formattedResult}"/>
        <br>
        <br>
        <a href="<s:url action="calculator"/>">Back</a>
    </body>
</html>

dentro do pacote : br.com.jm.s2a.calculator tem a classe CalculationRequest

package br.com.jm.s2a.calculator;

public class CalculationRequest {

    private double ammount;
    private double interest;
    private int numberOfParcels;

    public double getAmmount() {
        return ammount;
    }

    public void setAmmount(double ammount) {
        this.ammount = ammount;
    }

    public double getInterest() {
        return interest;
    }

    public void setInterest(double interest) {
        this.interest = interest;
    }

    public int getNumberOfParcels() {
        return numberOfParcels;
    }

    public void setNumberOfParcels(int numberOfParcels) {
        this.numberOfParcels = numberOfParcels;
    }
}

dentro do pacote : br.com.jm.s2a.calculator.action tem a classe CalculatorAction

package br.com.jm.s2a.calculator.action;

import br.com.jm.s2a.calculator.CalculationRequest;
import br.com.jm.s2a.calculator.factory.CalculatorFactory;
import br.com.jm.s2a.calculator.service.CalculatorService;
import java.text.NumberFormat;

import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;

@Results (
    {
        @Result(name="success", value="main.jsp"),
        @Result(name="showResult", value="result.jsp")
    }
)
public class CalculatorAction {

    private CalculatorService service = CalculatorFactory.getCalculatorService();
    private CalculationRequest request;
    private double result;

    public CalculationRequest getRequest() {
        return request;
    }

    public void setRequest(CalculationRequest request) {
        this.request = request;
    }

    public String getFormattedResult () {
        NumberFormat nf = NumberFormat.getCurrencyInstance();
        return nf.format(result);
    }

    public String execute () {
        System.out.println("PASSOU AQUI");
        return "success";
    }

    public String calculate () {
        result = service.calculateCompoundInterest(request);
        return "showResult";
    }

}

dentro do pacote : br.com.jm.s2a.calculator.factory tem a classe CalculatorFactory

package br.com.jm.s2a.calculator.factory;

import br.com.jm.s2a.calculator.service.CalculatorService;
import br.com.jm.s2a.calculator.service.CalculatorServiceImpl;

public class CalculatorFactory {

    private static final CalculatorService calculatorService = new CalculatorServiceImpl();

    public static CalculatorService getCalculatorService() {
        return calculatorService;
    }
}

dentro do pacote : br.com.jm.s2a.calculator.service tem a interface CalculatorService e a classe CalculatorServiceImpl

package br.com.jm.s2a.calculator.service;

import br.com.jm.s2a.calculator.CalculationRequest;

public interface CalculatorService {
 
    public double calculateCompoundInterest(CalculationRequest request);
}
package br.com.jm.s2a.calculator.service;

import br.com.jm.s2a.calculator.CalculationRequest;
import java.math.BigDecimal;

public class CalculatorServiceImpl implements CalculatorService{

    public double calculateCompoundInterest(CalculationRequest request) {

        BigDecimal interest;

        if (request.getInterest() > 1) {
            interest = new BigDecimal(request.getInterest()).divide(
                    new BigDecimal(100),3, BigDecimal.ROUND_FLOOR);

        } else {
            interest = new BigDecimal(request.getInterest());
        }

        interest = interest.add(new BigDecimal(1));

        BigDecimal periodCalculation = interest.pow(request.getNumberOfParcels());

        BigDecimal newAmount = new BigDecimal(request.getAmmount()).multiply(periodCalculation);
        
        return newAmount.doubleValue();
    }

}

Estou usando os seguintes libs abaixo nesse exemplo do Struts 2:
[b]- commons-logging-1.0.4

  • freemarker-2.3.8
  • jstl
  • ognl-2.6.11
  • standard
  • struts2-core-2.0.6
  • xwork-2.0.1[/b]

Quando eu executo no netbeans dá o seguinte erro:

Aparece isso abaxio na url:
http://localhost:8080/s2a/calculator.action

e a imagem abaixo mostra o erro:

o Erro que da no netbeans ao executar, mostrado no console:

INFO: Loading application struts2 at /struts2
INFO: struts2 was successfully deployed in 705 milliseconds.
INFO: Parsing configuration file [struts-default.xml]
INFO: Parsing configuration file [struts-plugin.xml]
INFO: Parsing configuration file [struts.xml]
WARNING: Settings: Could not parse struts.locale setting, substituting default VM locale
INFO: Detected GenericsObjectTypeDeterminer, initializing it...
INFO: Detected AnnotationXWorkConverter, initializing it...
INFO: Scanning for classes in [/C:/Users/Helder/Documents/NetBeansProjects/struts2/build/web/WEB-INF/classes/br/com/jm/s2a/calculator/action/] matching criteria: org.apache.struts2.config.ClasspathConfigurationProvider$1@300ec4

Alguem tem idéia o que possa estar acontecendo?

Estou usando o servidor do próprio netbeans o GlassFish Server 3.

Se alguem tiver um tutorial do Struts 2 legal com anotações, me passa por favor, pois, preciso executar esse framework no netbeans 6.9.1

Obrigado.

3 Respostas

Helder8

Dá esse erro, mas eu não entendo o que pode ser isso:

WARNING: Settings: Could not parse struts.locale setting, substituting default VM locale

Alguém tem idéia?

Helder8

Ao clicar no limpar e construir do netbeans 6.9.1, dá o seguinte erro:

init:
undeploy-clean:
Desimplantando...
deps-clean:
do-clean:
Deleting directory C:\Users\Helder\Documents\NetBeansProjects\struts2\build
C:\Users\Helder\Documents\NetBeansProjects\struts2\nbproject\build-impl.xml:967: Unable to delete file C:\Users\Helder\Documents\NetBeansProjects\struts2\build\web\WEB-INF\lib\struts2-core-2.0.6.jar
FALHA NA CONSTRUÇÃO (tempo total: 3 segundos)

Não entendo, já fiz de tudo, o que será que pode estar acontecendo???

Helder8

Pessoal preciso muito da ajuda de vocês,

Segue abaixo o link para download do projeto, que estou tentando rodar, para você darem um olhada, obrigado.

http://www.opendrive.com/files/19346477_0g9J4_41c8/struts2.zip

Obrigado.

Criado 20 de março de 2011
Ultima resposta 20 de mar. de 2011
Respostas 3
Participantes 1