Olá pessoal, Boa Noite
A minha duvida é a seguinte:
Tenho uma página web feita em JSF, usando RichFaces + Ajax nela.
Tenho nessa página um dataTable, que puxa de um banco de Dados uma lista de Avisos. Nessa DataTable tem dois botões dentro dela(Editar e Excluir) e um botão na página de(Cadastrar um Novo Aviso).
O problema é que quando eu digito algum nome no ModalPanel do botão(Cadastrar um Novo Aviso), ele vai e pega o valor do textbox do botão Editar ou do botão Excluir.
O código da minha página está meio grande, porque eu estou fazendo uns testes de desenvolvimento ainda, beleza.
Vou mandar a minha classe Bean, ManagerBean e minha página JSF, para vcs darem uma olhada, e qualquer coisa é só perguntar que eu respondo, ta bom, segue o código:
//AvisoBean
package br.com.sistema.controleHoras;
import java.util.Calendar;
public class AvisoBean {
private int codigo;
private int codigoLogin;
private String nomeLogin;
private String assunto;
private String descricao;
private Calendar dataPublicacao;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public int getCodigoLogin() {
return codigoLogin;
}
public void setCodigoLogin(int codigoLogin) {
this.codigoLogin = codigoLogin;
}
public String getNomeLogin() {
return nomeLogin;
}
public void setNomeLogin(String nomeLogin) {
this.nomeLogin = nomeLogin;
}
public String getAssunto() {
return assunto;
}
public void setAssunto(String assunto) {
this.assunto = assunto;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Calendar getDataPublicacao() {
return dataPublicacao;
}
public void setDataPublicacao(Calendar dataPublicacao) {
this.dataPublicacao = dataPublicacao;
}
}
//AvisoMB
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class AvisoMB {
private String filterAdm = "";
private String filterAssunto = "";
private DBAccessDAO db = new DBAccessDAO();
private List<AvisoBean> avisos = new ArrayList<AvisoBean>();
private AvisoBean aviso = new AvisoBean();
private LoginBean login = new LoginBean();
public AvisoMB() {
avisos.clear();
db.conectar();
avisos = db.consultarAvisos();
db.desconectar();
}
public DBAccessDAO getDb() {
return db;
}
public void setDb(DBAccessDAO db) {
this.db = db;
}
public List<AvisoBean> getAvisos() {
return avisos;
}
public void setAvisos(List<AvisoBean> avisos) {
this.avisos = avisos;
}
public AvisoBean getAviso() {
return aviso;
}
public void setAviso(AvisoBean aviso) {
this.aviso = aviso;
}
public LoginBean getLogin() {
return login;
}
public void setLogin(LoginBean login) {
this.login = login;
}
public String getFilterAdm() {
return filterAdm;
}
public void setFilterAdm(String filterAdm) {
this.filterAdm = filterAdm;
}
public String getFilterAssunto() {
return filterAssunto;
}
public void setFilterAssunto(String filterAssunto) {
this.filterAssunto = filterAssunto;
}
public void adicionaAviso() throws SQLException {
String controle = "erro";
aviso.setCodigoLogin(login.getCodigo());
while (controle == "erro") {
if ("".equals(aviso.getAssunto().trim())
|| "".equals(aviso.getDescricao().trim())) {
controle = "erro";
// Mensagem("Campo não pode estar vazio!");
} else {
if (aviso.getCodigoLogin() == 0) {
controle = "erro";
// Mensagem("Indique um dono para o aviso!");
} else {
controle = "sucesso";
// Mensagem("Aviso adicionado com sucesso!");
}
}
}
db.conectar();
db.adicionaAviso(aviso);
avisos = db.consultarAvisos();
db.desconectar();
// mensagem("Adicionado com sucesso!");
}
public String deletaAviso() throws SQLException {
db.conectar();
db.deletaAviso(aviso);
avisos = db.consultarAvisos();
db.desconectar();
// mensagem("Aviso deletado!");
return "";
}
public String atualizaAviso() throws SQLException {
aviso.setCodigoLogin(login.getCodigoTipoAcesso());
if (aviso.getCodigoLogin() == 0) {
return "";
// mensagem("Tem que escolher algum login de origem!");
} else {
db.conectar();
db.updateAviso(aviso);
avisos = db.consultarAvisos();
db.desconectar();
// mensagem("Atualizado com sucesso!");
return "";
}
}
public boolean filterHomeAdm(Object item) {
AvisoBean currentAdm = (AvisoBean) item;
if (filterAdm.length() == 0) {
return true;
}
if (currentAdm.getNomeLogin().toLowerCase().startsWith(
filterAdm.toLowerCase())) {
return true;
} else {
return false;
}
}
public boolean filterHomeAssunto(Object item) {
AvisoBean currentAssunto = (AvisoBean) item;
if (filterAssunto.length() == 0) {
return true;
}
if (currentAssunto.getAssunto().toLowerCase().startsWith(filterAssunto.toLowerCase())) {
return true;
} else {
return false;
}
}
}
//Aviso_páginaJSF
<!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:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<ui:composition template="/Templates/template.xhtml">
<head>
<link rel="stylesheet" href="CSS/estilo.css" />
<title>Home</title>
</head>
<ui:define name="corpo">
<rich:tabPanel style="float:left; margin-left:10px;" width="95%">
<rich:tab label="Quadro de Avisos" switchType="client">
<h:panelGrid>
<br />
<br />
<rich:dataTable id="dtbl_avisos" value="#{AvisoMB.avisos}"
rows="10" var="item" align="center" width="600"
style="text-align: center;" rendered="#{not empty AvisoMB.avisos}">
<f:facet name="header">
<rich:columnGroup>
<rich:column>
<h:outputText value="Administrador" />
</rich:column>
<rich:column>
<h:outputText value="Assunto" />
</rich:column>
<rich:column rendered="#{LoginMB.login.codigoTipoAcesso == 1}">
<h:outputText value="Editar" />
</rich:column>
<rich:column rendered="#{LoginMB.login.codigoTipoAcesso == 1}">
<h:outputText value="Excluir" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column filterMethod="#{AvisoMB.filterHomeAdm}">
<f:facet name="header">
<h:inputText value="#{AvisoMB.filterAdm}" id="inputhomeAdm">
<a4j:support event="onkeyup" reRender="dtbl_avisos , ds_home"
ignoreDupResponses="true" requestDelay="700"
oncomplete="setCaretToEnd(event);" />
</h:inputText>
</f:facet>
<h:outputText value="#{item.nomeLogin}" />
</rich:column>
<rich:column filterMethod="#{AvisoMB.filterHomeAssunto}">
<f:facet name="header">
<h:inputText value="#{AvisoMB.filterAssunto}"
id="inputhomeAssunto">
<a4j:support event="onkeyup" reRender="dtbl_avisos , ds_home"
ignoreDupResponses="true" requestDelay="700"
oncomplete="setCaretToEnd(event);" />
</h:inputText>
</f:facet>
<a4j:commandLink id="lnk_assuntoHome" value="#{item.assunto}"
onclick="#{rich:component('panel_Avisos')}.show();"
title="Visualizar Aviso"
reRender="nomeAdmVer_home,assuntoVer_home,descricaoVer_home">
<f:setPropertyActionListener value="#{item}"
target="#{AvisoMB.aviso}"></f:setPropertyActionListener>
</a4j:commandLink>
</rich:column>
<rich:column rendered="#{LoginMB.login.codigoTipoAcesso == 1}">
<f:facet name="header">
</f:facet>
<a4j:commandButton id="editar_dado" image="/Imagens/alterar.gif"
href="#" value="Editar"
onclick="#{rich:component('panelEdita_home')}.show()"
alt="Editar"
reRender="nomeAdmEdita_home,assuntoEdita_home,descricaoEdita_home">
<f:setPropertyActionListener value="#{item}"
target="#{AvisoMB.aviso}"></f:setPropertyActionListener>
</a4j:commandButton>
</rich:column>
<rich:column rendered="#{LoginMB.login.codigoTipoAcesso == 1}">
<f:facet name="header">
</f:facet>
<a4j:commandButton id="excluir_dado" image="/Imagens/delete.gif"
href="#" value="Deletar"
onclick="#{rich:component('panelDeleta_home')}.show()"
reRender="nomeAdmExcluir_home,assuntoExcluir_home" alt="Deletar">
<f:setPropertyActionListener value="#{item}"
target="#{AvisoMB.aviso}"></f:setPropertyActionListener>
</a4j:commandButton>
</rich:column>
<f:facet name="footer">
<rich:datascroller id="ds_home" renderIfSinglePage="false" />
</f:facet>
</rich:dataTable>
<br />
<br />
<br />
<rich:panel rendered="#{LoginMB.login.codigoTipoAcesso == 1}">
<a4j:commandButton id="btn_adicionar_aviso"
style="TEXT-ALIGN: center;" image="/Imagens/adicionar.gif"
onclick="#{rich:component('panelAdiciona_home')}.show()"
alt="Adicionar Aviso" />
<h:outputText value="Adicionar Novo Aviso"
style="MARGIN-LEFT: 10px;" />
</rich:panel>
<rich:modalPanel id="panelAdiciona_home" width="450" height="300"
left="auto" top="auto">
<f:facet name="header">Cadastro de Aviso</f:facet>
<h:graphicImage url="/Imagens/ex_Obrigatorio.gif" />
<label>Campos Obrigatórios</label>
<hr />
<br />
<h:outputText value="Administrador: " />
<h:selectOneMenu id="nomeAdmAdicionar_home"
value="#{AvisoMB.login.codigo}"
style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: medium;">
<f:selectItems value="#{LoginMB.allLoginsAdministrador}" />
</h:selectOneMenu>
<br />
<br />
<h:graphicImage url="/Imagens/ex_Obrigatorio.gif" />
<h:outputText id="assuntoAdicionar_home" value="Assunto: " />
<h:inputText value="#{AvisoMB.aviso.assunto}" />
<br />
<br />
<h:graphicImage url="/Imagens/ex_Obrigatorio.gif" />
<h:outputText id="descricaoAdicionar_home" value="Descricao: " />
<h:inputText value="#{AvisoMB.aviso.descricao}" />
<br />
<br />
<a4j:commandButton id="btn_adicionarAviso_adiciona"
value="Adicionar" action="#{AvisoMB.adicionaAviso}"
onclick="#{rich:component('panelAdiciona_home')}.hide()"
reRender="dtbl_avisos">
</a4j:commandButton>
<a4j:commandButton id="btn_adicionarAviso_voltar" value="Voltar"
onclick="#{rich:component('panelAdiciona_home')}.hide();return false" />
</rich:modalPanel>
<rich:modalPanel id="panelDeleta_home" width="320" height="245"
left="auto" top="auto" style="text-align:center;">
<f:facet name="header">Excluir</f:facet>
<br />
<h:outputText
value="Os seguintes dados serao deletados da base de dados: " />
<br />
<br />
<br />
<h:outputText id="nomeAdmExcluir_home"
value="Administrador: #{AvisoMB.aviso.nomeLogin}" />
<br />
<h:outputText id="assuntoExcluir_home"
value="Assunto: #{AvisoMB.aviso.assunto}" />
<br />
<br />
<br />
<h:outputText value="Voce deseja realmente deleta-los: " />
<br />
<br />
<a4j:commandButton id="btn_OK_excluir" value="SIM"
action="#{AvisoMB.deletaAviso}"
onclick="#{rich:component('panelDeleta_home')}.hide()"
reRender="dtbl_avisos" />
<a4j:commandButton id="btn_CANCELAR_excluir" value="NAO"
onclick="#{rich:component('panelDeleta_home')}.hide(); return false" />
</rich:modalPanel>
<rich:modalPanel id="panelEdita_home" width="320" height="290"
left="auto" top="auto"
style="text-align:center;vertical-align:middle;">
<f:facet name="header">Editar Aviso</f:facet>
<br />
<h:panelGroup>
<h:outputText value="Administrador:"
style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt;" />
<h:selectOneMenu id="nomeAdmEdita_home"
value="#{AvisoMB.login.codigo}"
style="FONT-FAMILY: 'Times New Roman';vertical-align:middle;">
<f:selectItems value="#{LoginMB.allLoginsAdministrador}" />
</h:selectOneMenu>
</h:panelGroup>
<br />
<br />
<h:panelGroup>
<h:outputText value="Assunto: "
style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt;" />
<h:inputText id="assuntoEdita_home"
value="#{AvisoMB.aviso.assunto}"
style="FONT-FAMILY: 'Times New Roman';vertical-align:middle;" />
</h:panelGroup>
<br />
<br />
<h:panelGroup>
<h:outputText value="Descricao: "
style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 12pt;" />
<h:inputTextarea id="descricaoEdita_home"
value="#{AvisoMB.aviso.descricao}"
style="width:150px;height:80px;FONT-FAMILY: 'Verdana';" />
</h:panelGroup>
<br />
<br />
<br />
<a4j:commandButton id="btn_OK_editar" value="Atualizar"
onclick="#{rich:component('panel_msgEditaConfirma')}.show()" />
<a4j:commandButton id="btn_CANCELAR_editar" value="Voltar"
style="margin-left:8px;"
onclick="#{rich:component('panelEdita_home')}.hide(); return false" />
</rich:modalPanel>
<rich:modalPanel id="panel_Avisos" width="300" height="200"
left="auto" top="auto" style="text-align:center;font-size:15pt;">
<f:facet name="header">Detalhes Aviso</f:facet>
<br />
<h:outputText value="Administrador: " />
<h:outputText id="nomeAdmVer_home"
value="#{AvisoMB.aviso.nomeLogin}" />
<br />
<br />
<h:outputText value="Assunto: " />
<h:outputText id="assuntoVer_home"
value="#{AvisoMB.aviso.assunto}" />
<br />
<br />
<h:outputText value="Descricao: " />
<h:outputText id="descricaoVer_home"
value="#{AvisoMB.aviso.descricao}" />
<br />
<br />
<br />
<a4j:commandButton id="btn_OK_Voltar" value="OK"
onclick="#{rich:component('panel_Avisos')}.hide(); return false" />
</rich:modalPanel>
<!-- Mensagens em tela -->
<rich:modalPanel id="panel_msgEditaConfirma" width="400"
height="150" left="auto" top="auto"
style="text-align:center;font-size:15pt;">
<f:facet name="header">Mensagem</f:facet>
<br />
<h:graphicImage value="/Imagens/img_warning1.JPG" />
<h:outputText
value=" Voce deseja realmente atualizar os dados?" />
<br />
<br />
<a4j:commandButton value="SIM" action="#{AvisoMB.atualizaAviso}"
oncomplete="#{rich:component('panel_msgEditaConfirma')}.hide()"
onclick="#{rich:component('panel_msgmostraConcluido')}.show()" />
<a4j:commandButton value="NAO"
onclick="#{rich:component('panel_msgEditaConfirma')}.hide(); return false" />
</rich:modalPanel>
<rich:modalPanel id="panel_msgmostraConcluido" width="380"
height="130" left="auto" top="auto"
style="text-align:center;font-size:15pt;">
<f:facet name="header">Mensagem</f:facet>
<br />
<h:graphicImage value="/Imagens/img_certo.JPG" />
<h:outputText value=" Dados alterados com sucesso!" />
<br />
<br />
<a4j:commandButton id="btn_OK_msgConfirmadoEditar" value="OK"
onclick="#{rich:component('panel_msgmostraConcluido')}.hide();#{rich:component('panelEdita_home')}.hide();return false"
reRender="dtbl_avisos" />
</rich:modalPanel>
</h:panelGrid>
</rich:tab>
</rich:tabPanel>
</ui:define>
</ui:composition>
</html>