Struts2 - Obtendo dados, editando dados e gravando os dados no banco através de ações

1 resposta
lucascorujito

Boa noite Senhores.

Espero que alguém possa me ajudar, pois até o momento tudo que andei lendo não me ajudou em nada.

Meu problema é o seguinte:

1º Tenho alguns dados gravados no banco de dados.
2º Estou lendo estes dados do banco através de uma ação, e esta ação preenche algumas opções do meu formulário (para edição) com os dados disponíveis no banco.
3º Os dados aparecem no form de boa, porém quando clico no botão que gera a nova ação ele reclama que não há uma ação com retorno INPUT mapeada.
4º Se eu mapeio esta ação, e coloco uma verificação para gravar meus dados (já editados) no banco, a ação com return INPUT não executa, ou melhor, ela mostra a página que eu mapeio no xml porém parece que não passa no método execute, fazendo com que meus dados não sejam gravados no banco.

Vou postar os códigos que tenho, para ver se ajudo no entendimento de vocês.

Código no xml. A ação animalLoadFormCadastro é a responsável por carregar os dados que estão no banco para uma página de view, que é o animal_cadastro.jsp

<action name="animalCadastro" class="br.com.swbull.actions.Animal.CadastroAnimalAction" method="execute" >
	<result name="SUCCESS">animal_cadastro_sucesso.jsp</result> 
	<result name="input">animal_cadastro_sucesso.jsp</result> 
	<result name="FAIL">animal_cadastro.jsp</result>
</action>
 
<action name="animalLoadFormCadastro" class="br.com.swbull.actions.Animal.LoadCadastroAnimaisAction" >
	<result name="SUCCESS">animal_cadastro.jsp</result>  
	<result name="FAIL">error.jsp</result>
</action>

Código da animalLoadFormCadastro

package br.com.swbull.actions.Animal;

import java.util.List;

import br.com.swbull.dao.DAOAnimal;
import br.com.swbull.dao.DAOLocalidade;
import br.com.swbull.dao.DAOProprietario;
import br.com.swbull.dao.DAORebanho;

import com.opensymphony.xwork2.ActionSupport;


public class LoadCadastroAnimaisAction extends ActionSupport {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private List<Object> pais;
	private List<Object> maes;
	private List<Object> racas;
	private List<Object> proprietarios;
	private List<Object> localidades;
	private List<Object> rebanhos;
	private String message;


	public LoadCadastroAnimaisAction(){			
		
	}

	public String execute(){
		
		DAOAnimal da = new DAOAnimal();
		DAOProprietario dp = new DAOProprietario();
		DAOLocalidade dl = new DAOLocalidade();
		DAORebanho dr = new DAORebanho();
		
		List<Object> animaisMachos = da.retrievebySexo("macho");
		List<Object> animaisFemeas = da.retrievebySexo("femea");
		List<Object> proprietarios = dp.retrieveAll();
		List<Object> localidades = dl.retrieveAll();
		List<Object> rebanhos = dr.retrieveAll();
		
		setPais(animaisMachos);
		setMaes(animaisFemeas);
		setProprietarios(proprietarios);
		setLocalidades(localidades);
		setRebanhos(rebanhos);
		
		return "SUCCESS";
		
	}
	
	public List<Object> getPais() {
		return pais;
	}

	public void setPais(List<Object> animaisMachos) {
		this.pais = animaisMachos;
	}

	public List<Object> getMaes() {
		return maes;
	}

	public void setMaes(List<Object> animaisFemeas) {
		this.maes = animaisFemeas;
	}
	
	public List<Object> getRacas() {
		return racas;
	}

	public void setRacas(List<Object> racas) {
		this.racas = racas;
	}

	public List<Object> getProprietarios() {
		return proprietarios;
	}

	public void setProprietarios(List<Object> proprietarios) {
		this.proprietarios = proprietarios;
	}

	public List<Object> getLocalidades() {
		return localidades;
	}

	public void setLocalidades(List<Object> localidades) {
		this.localidades = localidades;
	}

	public List<Object> getRebanhos() {
		return rebanhos;
	}

	public void setRebanhos(List<Object> rebanhos) {
		this.rebanhos = rebanhos;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

}

Código da ação animalCadastro

package br.com.swbull.actions.Animal;

import java.util.Date;

import br.com.swbull.models.animal.Animal;
import br.com.swbull.dao.DAOAnimal;

import com.opensymphony.xwork2.ActionSupport;


public class CadastroAnimalAction extends ActionSupport {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Long id;
	private String nome;
	private String raca;
	private String sexo;
	private String proprietario;
	private String prefixoBrinco;
	private Long idBrinco;
	private String mae;
	private String pai;
	private Date dataNascimento;
	private String localidade;
	private Long rebanho;
	private Double arrobas;
	private String message;


	public CadastroAnimalAction(){			
		
	}

	public String execute(){
		
		DAOAnimal da = new DAOAnimal();
		Animal animal = new Animal(nome, raca, sexo, proprietario, prefixoBrinco, idBrinco, mae, pai, dataNascimento, localidade, rebanho, arrobas);
		
		if(da.insert(animal)){
			setMessage("Cadastro executado com sucesso!");
			return "SUCCESS";
		}
		else if(da.insert(animal)){
			setMessage("Cadastro executado com sucesso!");
			return INPUT;
		}
		else{
			return "FAIL";
		}
		
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getRaca() {
		return raca;
	}

	public void setRaca(String raca) {
		this.raca = raca;
	}

	public String getSexo() {
		return sexo;
	}

	public void setSexo(String sexo) {
		this.sexo = sexo;
	}

	public String getProprietario() {
		return proprietario;
	}

	public void setProprietario(String proprietario) {
		this.proprietario = proprietario;
	}

	public String getPrefixoBrinco() {
		return prefixoBrinco;
	}

	public void setPrefixoBrinco(String prefixoBrinco) {
		this.prefixoBrinco = prefixoBrinco;
	}

	public Long getIdBrinco() {
		return idBrinco;
	}

	public void setIdBrinco(Long idBrinco) {
		this.idBrinco = idBrinco;
	}

	public String getMae() {
		return mae;
	}

	public void setMae(String mae) {
		this.mae = mae;
	}

	public String getPai() {
		return pai;
	}

	public void setPai(String pai) {
		this.pai = pai;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public String getLocalidade() {
		return localidade;
	}

	public void setLocalidade(String localidade) {
		this.localidade = localidade;
	}

	public Long getRebanho() {
		return rebanho;
	}

	public void setRebanho(Long rebanho) {
		this.rebanho = rebanho;
	}

	public Double getArrobas() {
		return arrobas;
	}

	public void setArrobas(Double arrobas) {
		this.arrobas = arrobas;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

}

Código da minha view (animal_cadastro.jsp)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:import url="includes/header.jsp" />
<%@ taglib uri="/struts-tags" prefix="s" %>
<body>
<div class="wrap">
	<c:import url="includes/menu.jsp" />
    <div class="miolo">
        <div class="content">
        <h1 class="tit_page">Cadastro de Animais</h1>
        <form action="animalCadastro" class="form" method="post" name="formularioCadastro" id="formularioCadastro">
            <ul>
                <li><label for="nome">Nome: <span class="ast">*</span></label><input type="text" name="nome" id="nome" class="long" /></li>
                <li>
                    <label for="raca">Raça: <span class="ast">*</span></label>
                    <select title="Raça" id="raca" name="raca" class="mid">
	                	<option value="default">Selecione uma raça</option>
	                	<s:iterator value="racas" >
                        	<option value="${nome}">${nome}</option>
                        </s:iterator>
                    </select>
                </li>
                <li>
                    <label for="raca">Mãe: <span class="ast">*</span></label>
                    <select title="Mãe" id="mae" name="mae" class="mid">
                    	<option value="default">Selecione a Mãe</option>
                    	<s:iterator value="maes" >
                        	<option value="${nome}">${nome}</option>
                        </s:iterator>
                    </select>
                </li>
                <li>
                    <label for="raca">Pai: <span class="ast">*</span></label>
                    <select title="Pai" id="pai" name="pai" class="mid">
                        <option value="default">Selecione um Pai</option>
                       	<s:iterator value="pais" >
                        	<option value="${nome}">${nome}</option>
                        </s:iterator>
                    </select>
                </li>
                <li><label for="sexo">Sexo: <span class="ast">*</span></label><input type="radio" name="sexo" id="sexo" value="macho" /><span>Macho</span><input type="radio" name="sexo" id="femea" value="femea" /><span>Fêmea</span></li>
                <li><label for="dataNascimento">Data de Nascimento: <span class="ast">*</span></label><input type="text" name="dataNascimento" id="dataNascimento" class="short" /><span>Ex.: dd/mm/aaaa</span></li>
                <li>
                    <label for="proprietario">Proprietário: <span class="ast">*</span></label>
                    <select title="Proprietário" id="proprietario" name="proprietario" class="mid">
                        <option value="default">Selecione um Proprietário</option>
                        <s:iterator value="proprietarios" >
                        	<option value="${nome}">${nome}</option>
                        </s:iterator>
                    </select>
                </li>
                <li>
                    <label for="localidade">Localidade atual: <span class="ast">*</span></label>
                    <select title="Proprietário" id="localidade" name="localidade" class="mid">
                        <option value="default">Selecione uma Localidade</option>
                        <s:iterator value="localidades" >
                        	<option value="${nome}">${nome}</option>
                        </s:iterator>
                    </select>
                </li>
                <li>
                    <label for="rebanho">Rebanho: <span class="ast">*</span></label>
                    <select title="Rebanho" id="rebanho" name="rebanho" class="mid">
                        <option value="default">Selecione um Rebanho</option>
                        <s:iterator value="rebanhos" >
                        	<option value="${id}">${id}</option>
                        </s:iterator>
                    </select>
                </li>
                <li><label for="prefixoBrinco">Prefixo do brinco: <span class="ast">*</span></label><input type="text" name="prefixoBrinco" id="prefixoBrinco" class="short" /><span>Ex.: AE34A</span></li>
                <li><label for="idBrinco">ID Brinco: <span class="ast">*</span></label><input type="text" name="idBrinco" id="idBrinco" class="mid" /><span>Ex.: [telefone removido]</span></li>
                <li><label for="arrobas">Peso : <span class="ast">*</span></label><input type="text" name="arrobas" id="arrobas" class="short" /><span>Dados em arrobas</span></li>
            </ul>
            <ul class="action">
                <li class="required"><span class="ast">* Campos Obrigatórios</span></li>
                <li><input type="submit" value="Cadastrar" id="submit" class="cadastrar" /></li>
                <li><input type="submit" value="Remover" id="remover" class="remover" /></li>
                <li><input type="submit" value="Pesquisar" id="pesquisar" class="pesquisar" /></li>
            </ul>
        </form>
        </div>
    </div>
</div>
<c:import url="includes/footer.jsp" />
</body>
</html>

Creio que o erro seja no mapeamento das ações, talvez eu não estou sabendo utilizar corretamente, alguém ai me ajuda por favor? :?

1 Resposta

von.juliano

Esse código está bastante complicado, dê uma lida nesse link, acho que pode te ajudar.

Flw! :thumbup:

Criado 7 de julho de 2011
Ultima resposta 7 de jul. de 2011
Respostas 1
Participantes 2