Problema usando o struts2.
Estou em uma pagina, e ao clicar no submit dela; eu esperava que fosse chamado um método no meu Action (coloquei um breakpoint na 1ª linha).
Mas isto não acontece.
No console, dá esse erro aqui:
16:35:30,578 ERROR [Dispatcher] Could not find action or result
No result defined for action br.com.ctbc.netsitebackup.controller.action.PlanAction and result input - action - file:/C:/DEVELOP/JAVA/containers/jboss-4.2.2/server/default/tmp/deploy/tmp52422netbackup-portal-exp.war/WEB-INF/classes/struts.xml:20:126
Mas o problema é que eu estive lendo em um livro, que esse result input serve pra quando acontece erro de validação. E eu não estou usando validação ! Então porque ele estaria requerindo este result input ? Somente declarei o result “success” e o “error”. Mesmo se eu insiro um result input no struts.xml; ele muda o erro, mas aí continua não passando pelo meu método no Action (ele tenta carregar a pagina, mas logicamente nao vai carregar pois alguns campos lá nao foram carregados no Action).
Resumindo, preciso descobrir onde é o começo do problema ( o que está causando a chamada ao result input mesmo não havendo validação no projeto ).
Disponibilizo aqui, a parte relevante do arquivo de configuração do struts, do Action, e das paginas; para verem que não é problema relativo à erros de associação do controller:
struts.xml:
[code] <action name=“purchasePlanStep1” method=“purchasePlanStep1” class=“br.com.ctbc.netsitebackup.controller.action.PlanAction”>
<result name=“success”>/pages/test/purchasePlanStep1.jsp</result>
<result name=“error”>/pages/error/error.jsp</result>
</action>
<action name="purchasePlanStep2" method="purchasePlanStep2" class="br.com.ctbc.netsitebackup.controller.action.PlanAction">
<result name="success">/pages/test/purchasePlanStep2.jsp</result>
<result name="error">/pages/error/error.jsp</result>
</action>[/code]
PlanAction.java (:
[code]package br.com.ctbc.netsitebackup.controller.action;
public class PlanAction extends ActionSupport implements Preparable,
ModelDriven<PlanoTO> {
…
/**
*
* Action chamado no passo inicial de obtenção de novo plano
*
* @return
*/
public String purchasePlanStep1() {
/* enviando informações dos tipos de pacotes (segmentos) */
segmentos = new ArrayList<String>();
SEGMENTO[] segmentosArray = SEGMENTO.values();
for (int i = 0; i < segmentosArray.length; i++) {
segmentos.add(segmentosArray[i].toString());
}
return SUCCESS;
}
/**
* Action chamado no segundo passo de obtenção de novo plano: entre a tela
* que terá o tipo de pacote escolhido e a tela que irá definir a capacidade
* do plano
*
* @return
*/
public String purchasePlanStep2() {
SEGMENTO segmentoEscolhido = planoTO.getSegmento();
if (segmentoEscolhido.equals(SEGMENTO.Residencial)) {
capacidades = netBackupService.listCapacitiesResidencial();
} else { // segmentoEscolhido.equals(SEGMENTO.Empresarial)
capacidades = netBackupService.listCapacitiesEmpresarial();
}
return SUCCESS;
}[/code]
purchasePlanStep1.jsp:
purchasePlanStep2.jsp:
[code]<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>Cadastro - Passo 2</title>
</head>
<body>
<s:form action="purchasePlanStep3">
<s:radio label="Capacidade" name="capacidade" list="capacidades"/>
<s:submit />
</s:form>
</body>
</html>[/code]