@Entity@Table(name = "estado")public class Estado implements Serializable { private static final long serialVersionUID = 1L;
@Id @Column(name="id_estado") private String idEstado;
@Column(name="ds_estado") private String dsEstado;
//bi-directional many-to-one association to Municipio //@OneToMany(mappedBy="estado") //private List<Municipio> municipios; //bi-directional many-to-one association to Municipio //@OneToMany(mappedBy="estado") //private List<Contato> contatos;
public Estado() { }
@Override
public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((dsEstado == null) ? 0 : dsEstado.hashCode()); result = prime * result + ((idEstado == null) ? 0 : idEstado.hashCode()); return result; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Estado other = (Estado) obj; if (dsEstado == null) { if (other.dsEstado != null) return false; } else if (!dsEstado.equals(other.dsEstado)) return false; if (idEstado == null) { if (other.idEstado != null) return false; } else if (!idEstado.equals(other.idEstado)) return false; return true; }
@Override public String toString() { return dsEstado; } }
@Entity@Table(name = "municipio")public class Municipio implements Serializable {
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="id_municipio") private Integer idMunicipio;
@NotEmpty @Column(name="ds_municipio") private String dsMunicipio;
@NotEmpty @Column(name="cod_ibge") private String codIbge; //bi-directional many-to-one association to Estado //@ManyToOne(fetch=FetchType.LAZY) //@JoinColumn(name="id_estado") @ManyToOne @JoinColumn(name="id_estado") private Estado estado; //bi-directional many-to-one association to Municipio @OneToMany(mappedBy="municipio") private List<Contato> contatos;
public Municipio() { }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((codIbge == null) ? 0 : codIbge.hashCode()); result = prime * result + ((dsMunicipio == null) ? 0 : dsMunicipio.hashCode()); result = prime * result + ((idMunicipio == null) ? 0 : idMunicipio.hashCode()); return result; }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Municipio other = (Municipio) obj; if (codIbge == null) { if (other.codIbge != null) return false; } else if (!codIbge.equals(other.codIbge)) return false; if (dsMunicipio == null) { if (other.dsMunicipio != null) return false; } else if (!dsMunicipio.equals(other.dsMunicipio)) return false; if (idMunicipio == null) { if (other.idMunicipio != null) return false; } else if (!idMunicipio.equals(other.idMunicipio)) return false; return true; }
@Override public String toString() { return dsMunicipio; } }
@FacesConverter("estadoConverter")public class EstadoConverter implements Converter { @Override public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value) { System.out.println("getAsObject - O valor é: " + value); if (value != null && !value.isEmpty()) { System.out.println("Ok - getAsObject - Valor: "+ value); return (Estado) uiComponent.getAttributes().get(value); } else { System.out.println("getAsObject - O valor é Nulo"); } return null; }
@Override public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object value) { if (value == null) { return null; } if (value instanceof Estado) { Estado entidade = (Estado) value;
System.out.println("getAsString - Valor: " + entidade.getIdEstado().toString() );
if (entidade != null && entidade instanceof Estado && entidade.getIdEstado() != null) { uiComponent.getAttributes().put( entidade.getIdEstado().toString(), entidade); return entidade.getIdEstado().toString(); } } return ""; }}
@Named(value = "municipioC")@ViewScopedpublic class MunicipioController extends AbstractMB {
private List<Municipio> elementos;
private Municipio registroSelecionado; private Municipio municipio; private Estado estado; private SelectItem[] estados;
@Inject private MunicipioService municipioService;
@Inject private EstadoService estadoService;
public MunicipioController() { }
public void salvar() { try {
municipioService.update(municipio); closeDialog(); displayInfoMessageToUser("Registro criado com sucesso!"); load(); preparaInclusao();
} catch (Exception e) { keepDialogOpen(); displayErrorMessageToUser("Ocorreu um erro ao atualizar o registro. " + e.getMessage()); e.printStackTrace(); } } public void excluir() { try { this.municipioService.delete(municipio); closeDialog(); displayInfoMessageToUser("Registro excluido com sucesso!"); load(); preparaInclusao(); } catch (Exception e) { keepDialogOpen(); displayErrorMessageToUser("Ocorreu um erro ao tentar excluir o registro. " + e.getMessage()); e.printStackTrace(); } }
public void selectRegistro(SelectEvent evt) { try { if (evt.getObject() != null) { this.registroSelecionado = (Municipio) evt.getObject(); } else { this.registroSelecionado = null; } } catch (Exception e) { this.registroSelecionado = null; } }
public List<Municipio> getElementos() { if (elementos == null) { load(); }
return elementos; }
private void load() { elementos = municipioService.findAll(); }
public void preparaInclusao() { this.municipio = new Municipio(); this.estado = new Estado(); } public void preparaAlteracao() { this.municipio = getRegistroSelecionado(); }
public void unselect() { this.registroSelecionado = null; }
public Municipio getMunicipio() {
if (municipio == null) { municipio = new Municipio(); }
return municipio; }
public Municipio getRegistroSelecionado() { if (registroSelecionado == null) { registroSelecionado = new Municipio(); }
return registroSelecionado; } public void setRegistroSelecionado(Municipio registroSelecionado) { this.registroSelecionado = registroSelecionado; } public Estado getEstado() { return estado; }
public void setEstado(Estado estado) { this.estado = estado; }
public SelectItem[] getEstados() { if (estados == null) { estados = FacesUtil.getSelectItems(estadoService.findAll(), true); } return estados;
}
@FacesConverter(forClass = Municipio.class) public static class MunicipioControllerConverter implements Converter {
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) { if (value != null) { return this.getAttributesFrom(component).get(value); } return null; }
java.lang.Integer getKey(String value) { java.lang.Integer key; key = Integer.valueOf(value); return key; }
String getStringKey(java.lang.Integer value) { StringBuffer sb = new StringBuffer(); sb.append(value); return sb.toString(); }
public String getAsString(FacesContext facesContext, UIComponent component, Object object) { if (object == null) { return null; } if (object instanceof Municipio) { Municipio o = (Municipio) object; return getStringKey(o.getIdMunicipio()); } else { throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + MunicipioController.class.getName()); } } protected Map<String, Object> getAttributesFrom(UIComponent component) { return component.getAttributes(); }
}
}
<ui:define name="content"> <h1 class="aw-page-title">Municípios</h1>
<h:form id="frm">
<p:toolbar> <p:toolbarGroup> <p:commandButton id="btnAdd" title="Novo registro" action="#{municipioC.preparaInclusao}" oncomplete="PF('itemDialog').show()" process="@this" update="itemPanel" icon="fa fa-fw fa-plus" /> <p:commandButton id="btnEdi" title="Edita registro" action="#{municipioC.preparaAlteracao}" oncomplete="PF('itemDialog').show()" process="@this" update="itemPanel" icon="fa fa-fw fa-edit" /> </p:toolbarGroup> </p:toolbar>
<p:messages autoUpdate="false" />
<p:dataTable id="itensTable" widgetVar="dataTable" var="item" loadingMessage="Carregando..." emptyMessage="Nenhum registro." reflow="true" value="#{municipioC.elementos}" selectionMode="single" selection="#{municipioC.registroSelecionado}" rowKey="#{item.idMunicipio}" style="margin-top:10px">
<p:ajax event="rowSelect" listener="#{municipioC.selectRegistro}" />
<p:column headerText="Id" style="width:50px"> <h:outputText value="#{item.idMunicipio}" /> </p:column>
<p:column headerText="Municipio"> <h:outputText value="#{item.dsMunicipio}" /> </p:column>
<p:column headerText="Uf"> <h:outputText value="#{item.estado.idEstado}" /> </p:column>
</p:dataTable>
<p:dialog widgetVar="itemDialog" header="Gerencia municipios" responsive="true" resizable="false" showEffect="explode" hideEffect="bounce" style="min-width: 400px" modal="true">
<p:toolbar> <p:toolbarGroup> <p:commandButton icon="fa fa-fw fa-save" title="Salvar" action="#{municipioC.salvar}" process="itemPanel" update="itemPanel itensTable" oncomplete="closeDialogIfSucess(xhr, status, args, PF('itemDialog'), 'itemDialog')" /> </p:toolbarGroup> </p:toolbar>
<h:panelGroup id="itemPanel" layout="block" styleClass="ui-fluid" style="margin-top:10px;"> <p:messages id="msgDialog" autoUpdate="false" />
<p:panelGrid columns="2" layout="grid" styleClass="panelgrid-noborder" columnClasses="ui-grid-col-4, ui-grid-col-8">
<p:outputLabel for="nome" value="Municipio:" /> <p:inputText id="nome" value="#{municipioC.municipio.dsMunicipio}" placeholder="Municipio" size="50" /> <p:outputLabel for="ibge" value="Codigo IBGE:" /> <p:inputText id="ibge" value="#{municipioC.municipio.codIbge}" placeholder="Codigo IBGE" size="10" />
<p:outputLabel for="estado" value="Estado" /> <p:selectOneMenu id="estado" value="#{municipioC.municipio.estado}" converter="estadoConverter"> <f:selectItems value="#{municipioC.estados}" var="itemE" itemValue="#{itemE}" itemLabel="#{itemE.dsEstado}" /> </p:selectOneMenu>
</p:panelGrid>
</h:panelGroup>
</p:dialog>
</h:form>
Olá bom dia.Davi meu caro tudo bem? então o que vc perguntou esta tudo ai no que eu postei, só não coloquei o Dao, e a Classe de Serviço
--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/1683eea8-cdd1-4e93-b6c3-d636d955eb24%40googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/CAJuoL2jkDuGkufqdEJx%2B%2BvL28bA3A3mz2qJXFBagjLEBN-p1Fg%40mail.gmail.com.
Para mais opções, acesse https://groups.google.com/d/optout.
--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/1e451ad2-7011-47d8-a521-c84263956e6a%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/9c2bd8f8-04b4-4d45-a0ce-e78bafb90ac9%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/CAJswn6z1Oo7Dm4_j2mewGspu7hKxSseR47%3DUgS-nuLhBAkR78Q%40mail.gmail.com.
--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/97f46c6a-6291-4b8e-8126-35d0ef0c0c9d%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
<p:toolbar> <p:toolbarGroup> <p:commandButton icon="fa fa-fw fa-save" title="Salvar" action="#{municipioC.salvar}" process="itemPanel"
update="@this itemPanel"
oncomplete="closeDialogIfSucess(xhr, status, args, PF('itemDialog'), 'itemDialog')"/> </p:toolbarGroup></p:toolbar>
<h:panelGroup id="itemPanel" layout="block" styleClass="ui-fluid" style="margin-top:10px;">
<p:messages id="msgDialog" autoUpdate="false" />
<p:panelGrid columns="2" layout="grid" styleClass="panelgrid-noborder" columnClasses="ui-grid-col-4, ui-grid-col-8">
<p:outputLabel for="nome" value="Municipio:" /> <p:inputText id="nome" value="#{municipioC.municipio.dsMunicipio}" placeholder="Municipio" size="50" />
--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/a7fdf2bf-9190-47c8-9bbd-9f5e5b6edfed%40googlegroups.com.
<!-- Weld - Implementação do CDI --><weld.version>2.3.2.Final</weld.version>
<!-- JSF Version --><javax.faces.version>2.2.10</javax.faces.version>
import javax.faces.component.UIComponent;import javax.faces.context.FacesContext;import javax.faces.convert.Converter;import javax.faces.convert.FacesConverter;import javax.faces.view.ViewScoped;import javax.inject.Inject;import javax.inject.Named;
import org.primefaces.event.SelectEvent;
import br.com.dominio.modelo.Estado;
import br.com.dominio.modelo.Municipio;import br.com.dominio.service.EstadoService;import br.com.dominio.service.MunicipioService;
--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/7eb31d90-997e-4fd5-8fc1-26162100ae83%40googlegroups.com.
Uma outra coisa que lembrei, alguns frameworks jsf quando vc usa dialog ele cria um elemento no final da página, então vc tem que colocar um form dentro do dialog para funcionar... tenta isso para ver se dá certo.
--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/1627e03a-fac2-4475-818d-5aa80136ec67%40googlegroups.com.
Olá Boa tarde.Cara removi e não chamou, e a bronca? o que houve então? o meu MB.... CDI num tá rolando?
--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/1aa325bb-7a5c-4808-9221-275af938b0bf%40googlegroups.com.
<p:commandButton update=":frm:itensTable" action="#{municipioC.salvar}" process="itemForm"
icon="fa fa-fw fa-save" title="Salvar"
oncomplete="closeDialogIfSucess(xhr, status, args, PF('itemDialog'), 'itemDialog')"/>
@FacesConverter(forClass = Estado.class)
public class EstadoConverter implements Converter {
@Inject EstadoDao dao ;
@Override public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String value) {
System.out.println("EstadoConverter - getAsObject - valor: "+value); Estado estado = null;
if (StringUtils.isNotEmpty(value)){ Integer Id = Integer.parseInt(value); estado = dao.findByID(Id); }
return estado; }
--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/4618861a-1a97-463f-b3e2-0c898dafea98%40googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/CAJuoL2g29VhDd%2BtyZuBVbJHLMMAK4VLQkRbmW%3DOy_mHfYXrnSg%40mail.gmail.com.
--
Você está recebendo esta mensagem porque se inscreveu no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+un...@googlegroups.com.
Visite este grupo em https://groups.google.com/group/javasf.
Para ver esta discussão na web, acesse https://groups.google.com/d/msgid/javasf/45a29610-48c3-4438-b74d-218872763bae%40googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.