anderson.bonavides 11 de abr. de 2009
Já olhou se os valores estão chegando no Bean? Voce pode botar um System.out.println() para verificar isso. Posta seu código aqui.
icarometal 11 de abr. de 2009
fera, verifiquei sim...
tanto que se eu escrever algo na tela, e depois escolher aopção limpar, ele seta tudo pra null, corretamente!
mas se eu mando enviar os valores nada.. :(
meu código:
este é o bean:
package com.clinimed.view ;
import java.util.ArrayList ;
import java.util.List ;
import javax.faces.model.ListDataModel ;
import com.clinimed.controller.MedicoCtr ;
import com.clinimed.model.Medico ;
@SuppressWarnings ( "unchecked" )
public class MedicoAction extends Medico {
private ListDataModel lstMedico ;
private String acao ;
private static String inserir_acao = "inserir" ;
private static String editar_acao = "editar" ;
public MedicoAction () {
super ();
setLstMedico ( new ListDataModel ( new ArrayList ()));
setAcao ( null );
limpar ();
}
public void setLstMedico ( ListDataModel lstMedico ) {
this . lstMedico = lstMedico ;
}
public ListDataModel getLstMedico () {
return lstMedico ;
}
public void setAcao ( String acao ) {
this . acao = acao ;
}
public String getAcao () {
return acao ;
}
public String gravar () {
Medico med = new Medico ();
med . setNome ( getNome ());
med . setTelefone ( getTelefone ());
med . setSexo ( getSexo ());
med . setCelular ( getCelular ());
med . setCodigo ( getCodigo ());
med . setCpf ( getCpf ());
med . setCrm ( getCrm ());
med . setEndereco ( getEndereco ());
med . setEspecialidade ( getEspecialidade ());
med . setLocalidade ( getLocalidade ());
MedicoCtr medctr = new MedicoCtr ();
if ( getAcao (). equals ( editar_acao )){
medctr . editarMedico ( med );
} else if ( getAcao (). equals ( inserir_acao ) ){
medctr . insereMedico ( med );
}
return "medicosSel" ;
}
public String editar () {
Medico medico = ( Medico ) getLstMedico (). getRowData ();
setNome ( medico . getNome ());
setTelefone ( medico . getTelefone ());
setSexo ( medico . getSexo ());
setCelular ( medico . getCelular ());
setCodigo ( medico . getCodigo ());
setCpf ( medico . getCpf ());
setCrm ( medico . getCrm ());
setEndereco ( medico . getEndereco ());
setEspecialidade ( medico . getEspecialidade ());
setLocalidade ( medico . getLocalidade ());
setAcao ( editar_acao );
return "medicosMan" ;
}
public String pesquisar (){
limpar ();
return "medicosSel" ;
}
public void excluir () {
limpar ();
}
public String novo () {
limpar ();
this . setAcao ( inserir_acao );
return "medicosMan" ;
}
public void localizar () {
List < Medico > list = new ArrayList ();
MedicoCtr med = new MedicoCtr ();
list = med . listaMedico ();
setLstMedico ( new ListDataModel ( list ));
}
public void limpar () {
this . setNome ( null );
this . setTelefone ( null );
this . setSexo ( null );
this . setCelular ( null );
this . setCodigo ( null );
this . setCpf ( null );
this . setCrm ( null );
this . setEndereco ( null );
this . setEspecialidade ( null );
this . setLocalidade ( null );
}
}
e este meu xhtml
<? xml version = "1.0" encoding = "ISO-8859-1" ?>
< 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 : rich = "http://richfaces.ajax4jsf.org/rich"
xmlns : a4j = "https://ajax4jsf.dev.java.net/ajax" >
< ui : composition template = "/WEB-INF/templates/layout/screen.xhtml" >
< ui : define name = "botao" >
< h : form >
< h : commandButton value = "#{applicationResources.evt_label_gravar}" action = "#{medicoAction.gravar}" />
< h : commandButton value = "#{applicationResources.evt_label_pesquisar}" action = "#{medicoAction.pesquisar}" />
< h : commandButton value = "#{applicationResources.evt_label_limpar}" action = "#{medicoAction.limpar}" rendered = "#{medicoAction.codigo == null}" />
</ h : form >
</ ui : define >
< ui : define name = "title" >
< h : outputText value = "#{applicationResources.label_medicoMan}" />
</ ui : define >
< ui : define name = "body" >
< h : form >
< script src = '# { facesContext . externalContext . requestContextPath } / resources / scripts / jquery . js ' type = "text/javascript" ></ script >
< center >
< table >
< tr >
< td >
< rich : panelBar >
< rich : panelBarItem label = "Dados Pessoais" >
< table >
< tr >
< td >< h : outputLabel for = "nome" value = "#{applicationResources.label_nome}" /></ td >
< td >< h : outputLabel for = "cpf" value = "#{applicationResources.label_cpf}" />:</ td >
< td >< h : outputLabel for = "crm" value = "#{applicationResources.label_crm}" /></ td >
< td >< h : outputLabel for = "sexo" value = "#{applicationResources.label_sexo}" /></ td >
</ tr >
< tr >
< td >< h : inputText id = "nome" value = "#{medicoAction.nome}" size = "50"
requiredMessage = "Nome obrigatório." required = "true" />
< h : message for = "nome" errorStyle = "color: darkred;" />
</ td >
< td >< h : inputText id = "cpf" value = "#{medicoAction.cpf}" size = "15"
requiredMessage = "CPF deve ser preenchido." required = "true" >
< rich : jQuery selector = "#cpf" query = "mask('[CPF removido]')"
timing = "onload" />
</ h : inputText >
< h : message for = "cpf" errorStyle = "color: darkred;" />
</ td >
< td >< h : inputText id = "crm" value = "#{medicoAction.crm}" size = "15"
requiredMessage = "CRM deve ser preenchido." required = "true" />
< h : message for = "crm" errorStyle = "color: darkred;" />
</ td >
< td > < rich : comboBox defaultLabel = "Sexo"
id = "sexo" value = "#{medicoAction.sexo}" >
</ rich : comboBox >
</ td >
</ tr >
</ table >
</ rich : panelBarItem >
< rich : panelBarItem label = "endereço" >
< table >
< tr >
< td >< h : outputLabel for = "endereco" value = "#{applicationResources.label_endereco}" /></ td >
< td >< h : outputLabel for = "estado" value = "#{applicationResources.label_estado}" /></ td >
< td >< h : outputLabel for = "cidade" value = "#{applicationResources.label_cidade}" /></ td >
</ tr >
< tr >
< td >< h : inputText id = "endereco" value = "#{medicoAction.endereco}" size = "50" /></ td >
< td > < rich : comboBox defaultLabel = "estado"
id = "estado" >
< f : selectItem itemValue = "Minas gerais" />
< f : selectItem itemValue = "São Paulo" />
< f : selectItem itemValue = "Rio de janeiro" />
</ rich : comboBox ></ td >
< td >< h : inputText id = "cidade" size = "25" /></ td >
</ tr >
< tr >
< td >< h : outputLabel for = "especialidade" value = "#{applicationResources.label_especialidade}" /></ td >
</ tr >
< tr >
< td >< rich : comboBox defaultLabel = "especialidade"
id = "especialidade" >
</ rich : comboBox >
</ td >
</ tr >
</ table >
</ rich : panelBarItem >
< rich : panelBarItem label = "Contato" >
< table >
< tr >
< td >< h : outputLabel for = "residencial" value = "#{applicationResources.label_telefone_residencial}" /></ td >
</ tr >
< tr >
< td >< h : inputText id = "residencial" value = "#{medicoAction.telefone}" size = "25" >
< rich : jQuery selector = "#residencial" query = "mask('(99) - 9999 - 9999')"
timing = "onload" />
< h : message for = "residencial" errorStyle = "color: darkred;" />
</ h : inputText ></ td >
< td ></ td >
</ tr >
< tr >
< td >< h : outputLabel for = "celular" value = "#{applicationResources.label_telefone_celular}" /></ td >
</ tr >
< tr >
< td >< h : inputText id = "celular" value = "#{medicoAction.celular}" size = "25" >
< rich : jQuery selector = "#celular" query = "mask('(99) - 9999 - 9999')"
timing = "onload" />
< h : message for = "celular" errorStyle = "color: darkred;" />
</ h : inputText ></ td >
</ tr >
</ table >
</ rich : panelBarItem >
</ rich : panelBar >
</ td >
</ tr >
</ table >
</ center >
</ h : form >
</ ui : define >
</ ui : composition >
</ html >
anderson.bonavides 11 de abr. de 2009
Faz isso aqui:
public class MedicoAction extends Medico {
private ListDataModel lstMedico ;
private String acao ;
private static String inserir_acao = "inserir" ;
private static String editar_acao = "editar" ;
public MedicoAction () {
super ();
setLstMedico ( new ListDataModel ( new ArrayList ()));
setAcao ( null );
limpar ();
}
public String gravar () {
Medico med = new Medico ();
//modificação para teste.
System . out . println ( "\n\n\nNome: " + med . setNome ( getNome ()));
System . out . println ( "Telefone:" + med . setTelefone ( getTelefone ()));
System . out . println ( "Sexo: " + med . setSexo ( getSexo ()));
System . out . println ( "Celular: " + med . setCelular ( getCelular ()));
System . out . println ( "Codigo: " + med . setCodigo ( getCodigo ()));
System . out . println ( "CPF: " + med . setCpf ( getCpf ()));
System . out . println ( "CRM: " + med . setCrm ( getCrm ()));
System . out . println ( "Endereco: " + med . setEndereco ( getEndereco ()));
System . out . println ( "Especialidade: " + med . setEspecialidade ( getEspecialidade ()));
System . out . println ( "Localidade: " + med . setLocalidade ( getLocalidade () + "\n\n\n" );
MedicoCtr medctr = new MedicoCtr ();
if ( getAcao (). equals ( editar_acao )){
medctr . editarMedico ( med );
} else if ( getAcao (). equals ( inserir_acao ) ){
medctr . insereMedico ( med );
}
return "medicosSel" ;
}
}
Tenta isso aqui e retorna para ver se houve sucesso.
icarometal 11 de abr. de 2009
então…
fiz o que o amigo indicou…
e o retorno de tudo é null…
está acontecendo o que estou suspeitando… só não sei como corrigir…
tipo, se eu passo os valores pras propriedades dentro do bean, elas aparecem na tela, ou sela, a ligação entre eles está sendo feita correta…
vc saberia me dizer em qual momento a bean recebe o valor da tela? tipo através do set do atributo, em qual momento, ele recebe este valor? no submit? no momento em que eu digito nos inmputtext?
cara, ser iniciante nas coisas é um problema… rs…
[]'s!
anderson.bonavides 11 de abr. de 2009
Os valores do managed bean chegam no momento que o action é chamado através do cammandbutton. O que vc precisa ver é se relamente seu Managed Bean está declarao de forma correta no faces-config.xml. Com certeza está existindo problema ai. Outra coisa, acredito que o problema pode está também no limpar do teu construtor. Tira isso daí e coloca em outro local. Quando o bean é chamado o construtor é chamado de imediato e está llimpando tudo. Então verifica estas 2 possibilidade ai.
icarometal 11 de abr. de 2009
ok fera vou verificar aqui…
mas provavelmente é culpa do limpar mesmo…
o bean esta declarado certinho, porque esta tela, é o detalhe de um CRUD. Na tela que lista os dados, quando clico em um registro, ele chama esta mesma tela, passando os detalhes do mesmo… e ta funcionando certinh…
vou dar uma verificada aqui e volto ´para deixar a solução!
[]'s!