[Resolvido]Curso FJ-21 Caelum Cap 11: Spring MVC

5 respostas
J

Caros,

Companheiros continuo eu em minha heroica jornada para alcançar o poder Jedi do Java. ;)

Mexendo nos códigos da apostila da Caelum me veio uma dúvida, estou procurando na internet mas ate agora não achei a reposta.

Seguinte:

Temos o código de uma página web.

<html>
<body>
<h3>Adicionar tarefas</h3>
<form action="adicionaTarefa" method="post">
Descrição: <br />
<textarea name="descricao" rows="5" cols="100"></textarea><br />
<input type="submit" value="Adicionar">
</form>
</body>
</html>

Quem chama este controlador.

@Controller
public class TarefasController {
@RequestMapping("adicionaTarefa")
public String adiciona() {
TarefaDAO dao = new TarefaDAO();
dao.adiciona(tarefa);
return "tarefa-adicionada";
}
}
A página web passa para o controlador uma string,
textarea name="descricao"
, mas no método do controlador é chamado o método que adiciona uma classe,
dao.adiciona(tarefa);
,

Como a "variável vira uma classe" ? Quer dizer foi passada uma string e o método adiciona passa uma classe por parametro.

5 Respostas

N

@RequestMapping("adicionaTarefa") public String adiciona(Tarefa tarefa) { TarefaDAO dao = new TarefaDAO(); dao.adiciona(tarefa); return "tarefa/adicionada"; }

Seu método adiciona não seria como mostrado acima?

Na sua classe Tarefa existe um atributo chamado descricao, certo? O que o Spring MVC faz, ele cria o objeto para você e insere o valor que veio do seu formulário, note que no seu form tem o textarea que contém o valor “descricao”. Seria como ele fizesse isso:

Tarefa tarefa = new Terefa();
tarefa.setDescricao("descrição vinda do form");

Aí com o objeto criado, ele passa para o Dao.

Se eu estiver falando besteira, alguém me corrija por favor.

P

Voce precisaria criar uma classe DAO para executar a função adiciona do controlador
ai sim vc insere o campo descricao em um objeto do tipo tarefa
o meu ficou assim:

package br.com.peu.tarefas.dao;

import java.sql.Connection;

import java.sql.Date;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.List;

import br.com.peu.tarefas.connection.ConnectionFactory;
import br.com.peu.tarefas.modelo.Tarefa;

public class TarefaDAO {

private Connection connection;

public TarefaDAO() {
	try{
		connection = new ConnectionFactory().getConnection();

	}catch(ClassNotFoundException e){
		throw new RuntimeException(e);
	}
}

public void adiciona(Tarefa tarefa) {
	String sql = "insert into tarefa (descricao, finalizado) " + "values (?,?)";

	try {
		PreparedStatement stmt = this.connection.prepareStatement(sql);
		stmt.setString(1, tarefa.getDescricao());
		stmt.setBoolean(2, tarefa.isFinalizado());
		
		stmt.execute();
		stmt.close();
	} catch (SQLException e) {
		throw new RuntimeException(e);
	}
}

}

Obs:Sou novo no Forum desculpe qualquer besteira

leonardoteles

olá, camarada…boa tarde!!

estou parado no exercício 11.20…poderia me dar uma ajuda!!!

quando chamo a página de listagem de tarefas, após ter feito todo o exercício de ajax, recebo o seguinte erro: “Configuration problem: Cannot locate BeanDefinitionParser for element [resources]”…Offending resource: ServletContext resource [WEB-INF/spring-context.xml

Desde já, agradeço pela atenção!!

J

leonardoteles:
olá, camarada…boa tarde!!

estou parado no exercício 11.20…poderia me dar uma ajuda!!!

quando chamo a página de listagem de tarefas, após ter feito todo o exercício de ajax, recebo o seguinte erro: “Configuration problem: Cannot locate BeanDefinitionParser for element [resources]”…Offending resource: ServletContext resource [WEB-INF/spring-context.xml

Desde já, agradeço pela atenção!!

Abre um topico e posta teu codigo, seu puder ajuda. =)

J

Na sua classe Tarefa existe um atributo chamado descricao, certo? O que o Spring MVC faz, ele cria o objeto para você e insere o valor que veio do seu formulário, note que no seu form tem o textarea que contém o valor “descricao”. Seria como ele fizesse isso:

Tarefa tarefa = new Terefa();
tarefa.setDescricao("descrição vinda do form");

Aí com o objeto criado, ele passa para o Dao.

Se eu estiver falando besteira, alguém me corrija por favor.
[/quote]

Oi cara,

Não falou besteira não é isso mesmo, na propria apostila da Caelum tem a explicação.

“Uma das grandes vantagens de frameworks modernos é que eles conseguem popular os objetos para nós.
Basta que de alguma forma, nós façamos uma ligação entre o campo que está na tela com o objeto que
queremos popular. E com o Spring MVC não é diferente.
Essa ligação é feita através da criação de um parâmetro do método adiciona. Esse parâmetro é o objeto que
deverá ser populado pelo Spring MVC com os dados que vieram da requisição.”

Criado 9 de novembro de 2012
Ultima resposta 15 de nov. de 2012
Respostas 5
Participantes 4