I'm just trying to connect to test the CRUD functionalities, but the error persists and I can't think of a way to fix it, I'm using Java 8 and Mentawai 2.5.6, it's an application with Hibernate too, if that helps
ApplicationManager
package br.com.merlinmec.mentawai;
import org.mentawai.core.ActionConfig;
import org.mentawai.core.Forward;
import org.mentawai.filter.ValidationFilter;
import br.com.merlinmec.mentawai.ContatoActions;
public class ApplicationManager extends org.mentawai.core.ApplicationManager {
@Override
public void loadActions() {
ActionConfig cadastroAction = new ActionConfig("/ContatoActions/insert", ContatoActions.class, "insert");
cadastroAction.addConsequence(SUCCESS, new Forward("/jsp/agenda.jsp"));
cadastroAction.addConsequence(ERROR, new Forward("/jsp/novo.jsp"));
addActionConfig(cadastroAction);
ActionConfig selectAction = new ActionConfig("/ContatoActions/select", ContatoActions.class, "select");
selectAction.addConsequence(SUCCESS, new Forward("/jsp/editar.jsp"));
selectAction.addConsequence(ERROR, new Forward("/jsp/agenda.jsp"));
addActionConfig(selectAction);
ActionConfig updateAction = new ActionConfig("/ContatoActions/update", ContatoActions.class, "update");
updateAction.addConsequence(SUCCESS, new Forward("/jsp/agenda.jsp"));
updateAction.addConsequence(ERROR, new Forward("/jsp/editar.jsp"));
addActionConfig(updateAction);
ActionConfig deleteAction = new ActionConfig("/ContatoActions/delete", ContatoActions.class, "delete");
deleteAction.addConsequence(SUCCESS, new Forward("/jsp/agenda.jsp"));
deleteAction.addConsequence(ERROR, new Forward("/jsp/agenda.jsp"));
addActionConfig(deleteAction);
}
public void loadFilters() {
filter(new ValidationFilter());
}
}
Action
package br.com.merlinmec.mentawai;
import java.io.IOException;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.List;
import org.mentawai.core.BaseAction;
import org.mentawai.rule.RegexRule;
import org.mentawai.rule.StringRule;
import org.mentawai.validation.Validatable;
import org.mentawai.validation.Validator;
import br.com.merlinmec.model.*;
public class ContatoActions extends BaseAction implements Validatable{
private DAOImpl DAO = new DAOImpl();
public void prepareValidator(Validator val, String method) {
String regexAlfanumerico = "[a-zA-Zà-úÀ-Ú0-9\\s]+";
String regexEmail = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$";
String regexTelefone = "\\(\\d{2}\\)9\\d{4}-\\d{4}";
if (method != null && method.equals("insert") && isPost()) {
val.requiredFields("Campo Obrigatório!","nome", "fone","email","rua","numero","bairro","cidade","estado");
val.add("nome", StringRule.getInstance(3,25), "Campo Nome com o tamanho errado (mín = 3, máx = 25)");
val.add("email", RegexRule.getInstance(regexEmail), "Email não está no formato correto!");
val.add("fone", RegexRule.getInstance(regexTelefone), "Telefone não está no formato correto (XX)9XXXX-XXXX !");
val.add("fone", StringRule.getInstance(0,14), "Campo Telefone com o tamanho errado (máx = 14)");
val.add("rua",RegexRule.getInstance(regexAlfanumerico), "O campo Rua deve conter somente caracteres alfanuméricos!");
val.add("rua", StringRule.getInstance(5,40), "Campo Rua com o tamanho errado (mín = 5, máx = 40)");
val.add("numero",RegexRule.getInstance(regexAlfanumerico), "O campo Nº da Residência deve conter somente caracteres alfanuméricos!");
val.add("numero", StringRule.getInstance(0,10), "Campo Nº da Residência com o tamanho errado (máx = 10)");
val.add("bairro",RegexRule.getInstance(regexAlfanumerico), "O campo Bairro deve conter somente caracteres alfanuméricos!");
val.add("bairro", StringRule.getInstance(5,40), "Campo Bairro com o tamanho errado (mín = 5, máx = 40)");
val.add("cidade",RegexRule.getInstance(regexAlfanumerico), "O campo Cidade deve conter somente caracteres alfanuméricos!");
val.add("cidade", StringRule.getInstance(5,30), "Campo Cidade com o tamanho errado (mín = 5, máx = 30)");
val.add("estado",RegexRule.getInstance(regexAlfanumerico), "O campo Estado deve conter somente caracteres alfanuméricos!");
val.add("estado", StringRule.getInstance(4,20), "Campo Estado com o tamanho errado (mín = 4, máx = 20)");
} else if (method != null && method.equals("update") && isPost()) {
val.requiredFields("Campo Obrigatório!","nome", "fone","email","rua","numero","bairro","cidade","estado");
val.add("nome", StringRule.getInstance(3,25), "Campo Nome com o tamanho errado (mín = 3, máx = 25)");
val.add("email", RegexRule.getInstance(regexEmail), "Email não está no formato correto!");
val.add("fone", RegexRule.getInstance(regexTelefone), "Telefone não está no formato correto (XX)9XXXX-XXXX !");
val.add("fone", StringRule.getInstance(0,14), "Campo Telefone com o tamanho errado (máx = 14)");
val.add("rua",RegexRule.getInstance(regexAlfanumerico), "O campo Rua deve conter somente caracteres alfanuméricos!");
val.add("rua", StringRule.getInstance(5,40), "Campo Rua com o tamanho errado (mín = 5, máx = 40)");
val.add("numero",RegexRule.getInstance(regexAlfanumerico), "O campo Nº da Residência deve conter somente caracteres alfanuméricos!");
val.add("numero", StringRule.getInstance(0,10), "Campo Nº da Residência com o tamanho errado (máx = 10)");
val.add("bairro",RegexRule.getInstance(regexAlfanumerico), "O campo Bairro deve conter somente caracteres alfanuméricos!");
val.add("bairro", StringRule.getInstance(5,40), "Campo Bairro com o tamanho errado (mín = 5, máx = 40)");
val.add("cidade",RegexRule.getInstance(regexAlfanumerico), "O campo Cidade deve conter somente caracteres alfanuméricos!");
val.add("cidade", StringRule.getInstance(5,30), "Campo Cidade com o tamanho errado (mín = 5, máx = 30)");
val.add("estado",RegexRule.getInstance(regexAlfanumerico), "O campo Estado deve conter somente caracteres alfanuméricos!");
val.add("estado", StringRule.getInstance(4,20), "Campo Estado com o tamanho errado (mín = 4, máx = 20)");
}
}
public String insert() throws IOException, SQLIntegrityConstraintViolationException {
String nome = input.getString("nome");
String email = input.getString("email");
String telefone = input.getString("telefone");
String rua = input.getString("rua");
String numero = input.getString("numero");
String bairro = input.getString("bairro");
String cidade = input.getString("cidade");
String estado = input.getString("estado");
JavaBeans contato = new JavaBeans();
contato.setNome(nome);
contato.setEmail(email);
contato.setFone(telefone);
contato.setRua(rua);
contato.setBairro(bairro);
contato.setNumero(numero);
contato.setCidade(cidade);
contato.setEstado(estado);
try {
DAO.insertContatos(contato);
addMessage("Contato inserido com sucesso!");
} catch (Exception e) {
addError("Erro ao inserir contato: " + e.getMessage());
}
return SUCCESS;
}
public String select() {
String nome = input.getString("nome");
String username = input.getString("email");
String telefone = input.getString("telefone");
String rua = input.getString("rua");
String numero = input.getString("numero");
String bairro = input.getString("bairro");
String cidade = input.getString("cidade");
String estado = input.getString("estado");
try {
List<JavaBeans> lista = DAO.listarContatos();
//getRequest().setAttribute("listaContatos", lista);
} catch (Exception e) {
addError("Erro ao obter lista de contatos: " + e.getMessage());
}
return SUCCESS;
}
public String update() {
String nome = input.getString("nome");
String username = input.getString("email");
String telefone = input.getString("telefone");
String rua = input.getString("rua");
String numero = input.getString("numero");
String bairro = input.getString("bairro");
String cidade = input.getString("cidade");
String estado = input.getString("estado");
JavaBeans contato = new JavaBeans();
try {
DAO.updateContatos(contato);
addMessage("Contato atualizado com sucesso!");
} catch (Exception e) {
addError("Erro ao atualizar contato: " + e.getMessage());
}
return SUCCESS;
}
public String delete() {
try {
int idcon = input.getInt("idcon");
boolean deleted = DAO.deleteContatos(idcon);
if (deleted) {
addMessage("Contato deletado com sucesso!");
} else {
addError("Contato não encontrado para deletar.");
}
} catch (Exception e) {
addError("Erro ao deletar contato: " + e.getMessage());
}
return SUCCESS;
}
}
JSP page to test mentawai e the connection
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib prefix="mtw" uri="http://www.mentaframework.org/tags-mtw/"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Agenda de Contatos</title>
<link rel="icon" href="imagens/favicon.png">
<link rel="stylesheet" href="style.css">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<h1>Criar Novo Contato</h1>
<mtw:form action = "ContatoActions.insert.mtw" method="post">
<table>
<tr>
<td><mtw:input name="nome" size="25" class="Caixa1" placeHolder="Nome"/></td>
<mtw:outError field="nome">
<font color="red"><mtw:out /></font>
</mtw:outError>
</tr>
<tr>
<td><mtw:input name="fone" class="Caixa2" onkeypress="$(this).mask('(00)90000-0000');" placeholder="Telefone"/></td>
<mtw:outError field="fone">
<font color="red"><mtw:out /></font>
</mtw:outError>
</tr>
<tr>
<td><mtw:input name="email" class="Caixa1" size="25" placeholder="E-mail"/></td>
<mtw:outError field="email">
<font color="red"><mtw:out /></font>
</mtw:outError>
</tr>
<tr>
<td><mtw:input name="rua" class="Caixa1" maxlength="40" placeholder="Rua"/></td>
<mtw:outError field="rua">
<font color="red"><mtw:out /></font>
</mtw:outError>
</tr>
<tr>
<td><mtw:input name="numero" class="Caixa1" maxlength="10" placeholder="Nº da Residência"/></td>
<mtw:outError field="rua">
<font color="red"><mtw:out /></font>
</mtw:outError>
</tr>
<tr>
<td><mtw:input name="bairro" class="Caixa1" maxlength="40" placeholder="Bairro"/></td>
<mtw:outError field="bairro">
<font color="red"><mtw:out /></font>
</mtw:outError>
</tr>
<tr>
<td><mtw:input name="cidade" class="Caixa1" maxlength="30" placeholder="Cidade"/></td>
<mtw:outError field="cidade">
<font color="red"><mtw:out /></font>
</mtw:outError>
</tr>
<tr>
<td><mtw:input name="estado" class="Caixa1" maxlength="20" placeholder="Estado"/></td>
<mtw:outError field="estado">
<font color="red"><mtw:out /></font>
</mtw:outError>
</tr>
</table>
<mtw:submit value="Adicionar Contato" />
</mtw:form>
</body>
</html>
I have already tested that the project has a connection to the database through Hibernate.
I already tried updating and checking conflicts of maven dependencies but it didn't return any problems, I tried accessing different URLs to see if I could access any, I tried copying other projects online to test if the project screen appeared but they also showed the same related error to the Controller.