Pessoal,
tenho dois f:selectItem um com valor SIM e outro com valor NÃO, segue o código
<p:selectOneRadio >
<f:selectItem itemLabel="SIM" itemValue="SIM" />
<f:selectItem itemLabel="NÃO" itemValue="NAO" />
</p:selectOneRadio>
quero que ao executar o projeto, o f:selectItem SIM já venha selecionado…
como faço isso?
No construtor do seu ManagedBean você pode inicializar o atributo que será utilizado no seu selectOneRadio com o valor=“SIM”.
<p:selectOneRadio value="#{seuBean.seuAtributo}" >
<f:selectItem itemLabel="SIM" itemValue="SIM" />
<f:selectItem itemLabel="NÃO" itemValue="NAO" />
</p:selectOneRadio>
@ManagedBean
public class SeuBean {
private String seuAtributo;
// gets and sets
public SeuBean(){
seuAtributo = "SIM";
}
}
ta. eu acrescento esse código no meu ManagedBean e no código <p:selectOneRadio value="#{seuBean.seuAtributo}" >
<f:selectItem itemLabel="SIM" itemValue="SIM" />
<f:selectItem itemLabel="NÃO" itemValue="NAO" />
</p:selectOneRadio>
não acrescento nada?
O código que eu postei foi só um exemplo, no lugar de seuAtributo, você pode substituir pelo atributo que você precisar.
cara ainda não consegui… tenho uma classe pacienteController
package br.com.clinica.controller;
import br.com.clinica.dao.PacienteDao;
import br.com.clinica.dao.InterfacePaciente;
import br.com.clinica.model.Paciente;
import java.awt.event.ActionEvent;
import java.text.ParseException;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.primefaces.context.RequestContext;
@ManagedBean
@SessionScoped
public class PacienteController {
private Paciente paciente;
private DataModel listaPaciente;
aqui é o código que você me passou e eu alterei os nomes
[quote]
private String carteirinha_emitida;
public PacienteController(){
carteirinha_emitida = "SIM";
}
[quote]
public Paciente getPaciente() {
if (this.paciente == null) {
this.paciente = new Paciente();
}
return paciente;
}
public void setPaciente(Paciente paciente) {
this.paciente = paciente;
}
public DataModel getListaPaciente() {
List<Paciente> lista = new PacienteDao().list();
listaPaciente = new ListDataModel(lista);
return listaPaciente;
}
public void prepararAdicionarPaciente(ActionEvent actionEvent) {
paciente = new Paciente();
}
public void prepararAlterarPaciente(ActionEvent actionEvent) {
paciente = (Paciente) (listaPaciente.getRowData());
}
public void adicionar(ActionEvent actionEvent) throws ParseException {
InterfacePaciente dao = new PacienteDao();
dao.salvar(paciente);
}
public String excluir() {
Paciente paciente = (Paciente) (listaPaciente.getRowData());
InterfacePaciente dao = new PacienteDao();
dao.remover(paciente);
return "paciente";
}
public void clear(AjaxBehaviorEvent event) {
this.paciente = null;
}
public void reset() {
RequestContext.getCurrentInstance().reset("form:dialog");
}
public void atualizarPaciente() {
InterfacePaciente dao = new PacienteDao();
dao.atualizar(paciente);
RequestContext.getCurrentInstance().closeDialog(paciente);
}
public String carregarPaciente(Paciente c) {
paciente = c;
return "pacienteAlterar";
}
public void choosePaciente() {
this.prepararAlterarPaciente(null);
RequestContext.getCurrentInstance().openDialog("pacienteAlterar");
}
}
e aqui é o meu código xhtml do p:selectOneRadio
<p:selectOneRadio id="carteirinha_emitida"
value="#{pacienteController.paciente.carteirinha_emitida}">
<f:selectItem itemLabel="SIM" itemValue="SIM" />
<f:selectItem itemLabel="NÃO" itemValue="NAO" />
</p:selectOneRadio>
está certo o código do meu pacienteController que é o que você me passou e eu somente alterei os nome do atributo??
e o meu código xhtml ta certo tbm??
pode me ajudar se não for pedir demais??
Tenta fazer o seguinte, vou colocar algumas sugestões para você.
Coloquei no teu código algumas modificações, veja se vai dar certo.
Outra coisa, evite usar @SessionScoped , tente usar @ViewScoped , a não ser que seja realmente necessário manter os dados na sessão.
Espero ter ajudado.
Abraço
[quote=marcos.stuchi]cara ainda não consegui… tenho uma classe pacienteController
package br.com.clinica.controller;
import br.com.clinica.dao.PacienteDao;
import br.com.clinica.dao.InterfacePaciente;
import br.com.clinica.model.Paciente;
import java.awt.event.ActionEvent;
import java.text.ParseException;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.primefaces.context.RequestContext;
@ManagedBean
@SessionScoped
public class PacienteController {
private Paciente paciente;
private DataModel listaPaciente;
aqui é o código que você me passou e eu alterei os nomes
[quote]
public PacienteController(){
this.paciente = new Paciente();
this.paciente.carteirinha_emitida = true;
}
[quote]
public Paciente getPaciente() {
if (this.paciente == null) {
this.paciente = new Paciente();
}
return paciente;
}
public void setPaciente(Paciente paciente) {
this.paciente = paciente;
}
public DataModel getListaPaciente() {
List<Paciente> lista = new PacienteDao().list();
listaPaciente = new ListDataModel(lista);
return listaPaciente;
}
public void prepararAdicionarPaciente(ActionEvent actionEvent) {
paciente = new Paciente();
}
public void prepararAlterarPaciente(ActionEvent actionEvent) {
paciente = (Paciente) (listaPaciente.getRowData());
}
public void adicionar(ActionEvent actionEvent) throws ParseException {
InterfacePaciente dao = new PacienteDao();
dao.salvar(paciente);
}
public String excluir() {
Paciente paciente = (Paciente) (listaPaciente.getRowData());
InterfacePaciente dao = new PacienteDao();
dao.remover(paciente);
return "paciente";
}
public void clear(AjaxBehaviorEvent event) {
this.paciente = null;
}
public void reset() {
RequestContext.getCurrentInstance().reset("form:dialog");
}
public void atualizarPaciente() {
InterfacePaciente dao = new PacienteDao();
dao.atualizar(paciente);
RequestContext.getCurrentInstance().closeDialog(paciente);
}
public String carregarPaciente(Paciente c) {
paciente = c;
return "pacienteAlterar";
}
public void choosePaciente() {
this.prepararAlterarPaciente(null);
RequestContext.getCurrentInstance().openDialog("pacienteAlterar");
}
}
e aqui é o meu código xhtml do p:selectOneRadio
<p:selectOneRadio id="carteirinha_emitida"
value="#{pacienteController.paciente.carteirinha_emitida}">
<f:selectItem itemLabel="SIM" itemValue="true" />
<f:selectItem itemLabel="NÃO" itemValue="false" />
</p:selectOneRadio>
está certo o código do meu pacienteController que é o que você me passou e eu somente alterei os nome do atributo??
e o meu código xhtml ta certo tbm??
pode me ajudar se não for pedir demais?? :/[/quote]
me perdoe a insistência, mas ainda não deu certo
nesse código: [code]
private Paciente paciente;
private DataModel listaPaciente;
public PacienteController(){
this.paciente = new Paciente();
this.paciente.carteirinha_emitida = true;
}
[/code] aparece o seguinte erro: para essa linha: this.paciente.carteirinha_emitida = true;
“Tornar carteirinha_emitida público”
esse carteirinha_emita, vem da minha classe Paciente que é esse código:
#minha classe Paciente
[code]
private String carteirinha_emitida;
public String getCarteirinha_emitida() {
return carteirinha_emitida;
}
public void setCarteirinha_emitida(String carteirinha_emitida) {
this.carteirinha_emitida = carteirinha_emitida;
}
[/code] que vai me retornar uma String SIM OU NAO pra eu inserir no banco de dados conforme o que o usuário deixar assinalado no p:selectOneRadio,
se eu colocar carteirinha_emitida como público assim como o primeiro erro que comentei, dai aparece o seguinte erro na minha classe Paciente
para o código
public String carteirinha_emitida;
a variável da instância para um atributo persistente não deve ser pública.
acho que isso não tão difícil de resolver, mas não está dando certo
igor_ks
Novembro 29, 2013, 8:07am
#8
Na sua primeira tentativa, vc criou uma vriavel no seu bean carteirinha_emitida , mas no seu xhtml vc estava pegando da sua entidade paciente pacienteController.paciente.carteirinha_emitida .
Nunca que ia pegar mesmo, pois estão vindo de lugares diferente… se vc fizesse pacienteController.carteirinha_emitida , teria funcionado em partes.
Depois na sua segunda “tentativa”, vc tentou fazer isso: this.paciente.carteirinha_emitida = true; que o guilherme_costa havia passado… mas isso é encapsulamento básico, td bem, nao passe seu atributo para public, mas é só fazer o set dele!
this.paciente.setCarteirinha_emitida(“SIM”);
muitooooo obrigado igor_ks,
coloquei o código this.paciente.setCarteirinha_emitida(“SIM”); e deu certo, obrigado a você também guilherme_costa e me desculpem pela insistência.