Boa noite, pessoal, estou com um problema de validação.
Gostaria que quando o usuário inserisse um "número de decreto" que já existisse no banco, houvesse uma mensagem dizeando que já existia, bom tentei fazer deste modo e não deu certo.
estou obtendo a excessão java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.prova.decreto.Decreto
Este é o DAO.
public Decreto buscaPorDecreto(BigInteger numero) {
String hql = "select d from Decreto d where d.numero = :numero";
Query consulta = this.session.createQuery(hql);
consulta.setBigInteger("numero", numero);
System.out.println(hql);
System.out.println(numero);
return (Decreto) consulta.list();
}
[code]
Este é o DecretoRN - onde trato as regras.
public boolean verificarDecreto(BigInteger numero) {
if (this.decretoDAO.buscaPorDecreto(numero) == null) {
return true;
}
return false;
}[/code]
Este é o DecretoBean
public String salvar() {
FacesContext context = FacesContext.getCurrentInstance();
if (isDecretoCadastrado(decreto)) {
System.out.println(decreto);
FacesMessage facesMessage = new FacesMessage(
"Digite um número de decreto diferente.");
context.addMessage(null, facesMessage);
return null;
}
DecretoRN decretoRN = new DecretoRN();
decretoRN.salvar(this.decreto);
return FOWARD_SUCESSO;
}
public boolean isDecretoCadastrado(Decreto decreto) {
return decretoRN.verificarDecreto(decreto.getNumero());
}
[code]
A página
<?xml version=“1.0” encoding=“ISO-8859-1”?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui=“http://java.sun.com/jsf/facelets"
xmlns:h=“http://java.sun.com/jsf/html"
xmlns:f=“http://java.sun.com/jsf/core"
xmlns:a4j=“http://richfaces.org/a4j"
xmlns:rich=“http://richfaces.org/rich”>
<ui:composition template=“template/template.xhtml”>
<ui:define name=“content”>
<rich:panel header=“Usuarios”>
<h:form id=“usuarioForm”>
<h:messages layout=“list” style=“color:red; font-weight:bold;” />
<h:inputHidden value=”#{decretoBean.decreto.id}” />
<h:inputHidden value=”#{decretoBean.decreto.ativo}” />
<h:panelGrid columns="2">
<h:outputLabel for="decreto" value="Número do Decreto" />
<h:inputText id="decreto" value="#{decretoBean.decreto.numero}"
size="30" required="true"
requiredMessage="O campo número do decreto não foi preenchido."
validatorMessage="Digite o número do decreto com no mínimo de 3 caracteres, máximo de 30.">
<f:validateLength minimum="3" maximum="11"></f:validateLength>
</h:inputText>
<h:outputLabel value="Data do Decreto" for="data" />
<h:inputText value="#{decretoBean.decreto.data}" id="data"
size="10" maxlength="10" required="true"
requiredMessage="O campo data não foi preenchido."
validatorMessage="A data deve conter até dez algarismos.">
<f:convertDateTime dateStyle="medium" />
</h:inputText>
<h:outputText value="Descrição" for="descricao" />
<h:inputTextarea id="descricao" label="descricao"
value="#{decretoBean.decreto.descricao}" cols="40" rows="5"
maxlength="200" required="true"
requiredMessage="O campo Descrição deve ser preenchido."
validatorMessage="A Descrição deve ter no mínimo 5 e no máximo 200 caracteres e só deve ter os símbolos '.' e '_'.">
</h:inputTextarea>
<h:commandButton action="lista" value="volta" immediate="true" />
<h:commandButton id="btnSalvar" action="#{decretoBean.salvar}"
value="salvar" execute="@form">
</h:commandButton>
</h:panelGrid>
</h:form>
</rich:panel>
</ui:define>
</ui:composition>
</html>[/code]