Olá pessoal, boa tarde.
Gostaria de pedir uma ajudinha.
Estou desenvolvendo uma aplicação web com arquitetura MVC e utilizando o mentawai.
Quando vou chamar a action showform para criar o formulário de cadastro de computadores, notei que não esta realizando o cadastro pois o input da action esta = -1.
Quando fui debugar o trem aki vi que a variável que criei chamada id para receber o input da action esta com o valor -1.
Não entendi o por que.
Essa é a jsp que cria o form para mim
Code:
<%@include file="../../WEB-INF/imports.jspf" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<h3>Cadastro de computador</h3>
<mtw:form action="ComputadorCreate.mtw" method="post" >
<table>
<table>
<tr>
<td>* Nome: </td>
<td><mtw:input name="nome" type="text"/></td>
<td>${errors.errorNomeComputador}</td>
</tr>
<tr>
<td>Entrada: </td>
<td><mtw:input name="entrada" type="checkbox"/></td>
</tr>
<tr>
<td>Saída: </td>
<td><mtw:input name="saida" type="checkbox"/></td>
</tr>
<tr>
<td></td>
<td>
<mtw:submit value=" Salvar "/>
<mtw:submit action="" value=" Novo "/>
<mtw:submit value=" Cancelar "/>
</td>
</tr>
</table>
</table>
</mtw:form>
Essa é action que vai executar ação de pegar o id
Code:
package sgm.controller.computador.action;
import org.mentawai.core.BaseAction;
import sgm.model.POJO.Computador;
import sgm.model.ServiceLocator;
public class ComputadorShowFormAction extends BaseAction {
@Override
public String execute() throws Exception {
[color=red]Long id = input.getLong("id");[/color] neste linha o input da action esta com -1 o erro esta aki <-- o id que aparece aki = -1
if(id != null && id > 0){
Computador computador = ServiceLocator.getComputadorService().readById(id);
output.setValue("ovComputador", computador);
}
return SUCCESS;
}
}
essa é a action que persiste os dados no banco
Code:
package sgm.controller.computador.action;
import java.util.HashMap;
import java.util.Map;
import org.mentawai.core.BaseAction;
import sgm.model.POJO.Computador;
import sgm.model.ServiceLocator;
public class ComputadorCreateAction extends BaseAction {
@Override
public String execute() throws Exception {
String consequence = ERROR;
Long id = input.getLong("id");
Computador computador = (Computador) input.getValue("voCreateComputador");
Map<String,String> errors = new HashMap<String, String>();
errors = ServiceLocator.getComputadorService().create(computador);
if(errors.isEmpty()){
consequence = SUCCESS;
}else{
output.setValue("errors", errors);
}
return consequence;
}
}
Essa o no service
Code:
public Computador readById(Long id) throws Exception {
ComputadorDAO dao = new ComputadorDAO();
return dao.readById(id);
}
DAO para realizar a leitura do id
Code:
public Computador readById(Long id) throws Exception {
Computador computador = new Computador();
String sql = "SELECT * FROM computador WHERE id = ?";
Connection conn = ConnectionManager.getInstance().getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setLong(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
computador = this.extract(rs);
}
return computador;
}
DAO - armazenar no banco
Code:
public class ComputadorDAO implements BaseDAO<Computador> {
public void create(Computador computador) throws Exception {
String sql = " INSERT INTO computador(id, "
+ " nome ,"
+ " entrada ,"
+ " saida) "
+ "values(nextval('computador_seq'),?,?,?)returning id";
try {
Connection conn = ConnectionManager.getInstance().getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
int i = 0;
ps.setString(++i, computador.getNome_computador());
ps.setBoolean(++i, computador.getEntrada());
ps.setBoolean(++i, computador.getSaida());
ps.execute();
ps.close();
conn = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
ApplicationManager
Code:
// Monta o formulário para criar um novo computador
ac = new ActionConfig("ComputadorShowForm", ComputadorShowFormAction.class);
ac.addConsequence(SUCCESS, new Forward("jsp/computador/computadorCreateForm.page"));
ac.addConsequence(ERROR, new Redirect("home.jsp"));
addActionConfig(ac);
//Armazena o novo computador e redireciona para a action ComputadorRead.
ac = new ActionConfig("ComputadorCreate", ComputadorCreateAction.class);
ac.addFilter(new VOFilter(Computador.class, "voCreateComputador"));
ac.addConsequence(SUCCESS, new Forward("jsp/computador/computadorCreateForm.page"));
ac.addConsequence(ERROR, new Redirect("index.jsp"));
addActionConfig(ac);