Como chamar um método de um CONTROLLER do Vraptor a partir de um BUTTON html?

1 resposta
J

Preciso criar uma tabela num banco MySQL existente. Estou usando Vraptor e criei a seguinte lógica no meu Controller:

@Path("/criar")
	public void criar(String acao){
		if (acao.equals("Criar tabela no banco de dados")){
			dao.criartabela();					
	    }	
	}

que chama o método DAO:

public void criartabela(){
		Configuration config = new Configuration();
		config.addAnnotatedClass(Fornecedor.class);
		config.configure();
		new SchemaExport(config).create(true, true);
		System.out.println("Tabela fornecedor criada no BD!");
	}

Preciso saber agora como chamar o método criar() a partir de um button HTML.

Tentei usar no meu index.jsp o seguinte:

<form action="criar">
<input type="submit" value="Criar tabela no banco de dados" name="acao"/>
</form>

Mas recebo a seguinte mensagem:

O que está errado?

Abçs

1 Resposta

J

Ois,

Eu pergunto, eu respondo. Acabei de resolver o problema.

Bastou
[list]1 - colocar um método criar() no Controller que ...[/list]

public class FornecedorController{
           public void criar(){	
  		dao.criartabela();
           }
}

[list]2 - ... chama criartabela() do DAO e depois ...[/list]

public void criartabela(){
		Configuration config = new Configuration();
		config.addAnnotatedClass(Fornecedor.class);
		config.configure();
		SessionFactory factory = config.buildSessionFactory();
		Session session = factory.openSession();

		Transaction tx = session.beginTransaction();
		new SchemaExport(config).create(true, true);
		tx.commit();		
		System.out.println("Tabela fornecedor criada no BD Engenharia_Software!");
	}
[list]3 - ... usar um button em um form, cuja action deve chamar o método desejado do respectivo Controller, usando a convenção do VRaptor:[/list]
<form action="/cadastro-fornecedor2/fornecedor/criar">
<button type="submit">Criar BD</button>
</form>

Depois que a gente aprende, aí parece óbvio...
Citando David Schwartz, autor do livro "Use o poder da sua mente":

"Não existe nada difícil para quem sabe fazer".

Criado 11 de agosto de 2011
Ultima resposta 12 de ago. de 2011
Respostas 1
Participantes 1