Boa noite!
Não estou conseguindo fazer com que o dado selecionado usando o inplace seja persistido no banco…já tentei de tds as formas…
São duas combos de estados e cidades usando javascript e eu não sei como usar as duas coisas ao mesmo tempo… ;/
Se alguém puder me dar uma luz eu agradeço!
A combo de estados:
<td align="right"><h:outputText value="Estado"/></td>
<td align="left">
<p:inplace label="Clique duas vezes" effectSpeed="fast" event="dblclick">
<h:selectOneMenu id="estado" required="true" requiredMessage="Campo Estado é obrigatório" value="#{usuarioBeans.user.estado}">
<select id="estado" name="estado"></select>
</h:selectOneMenu>
</p:inplace>
</td>
Eu sei que está uma bagunça…tem duas combos…uma vazia e a outra popula com os estados…mas quando vou gravar é como se eu não tivesse escolhido nenhum valor pra ela. Eu queria que o <h:selectOneMenu recebesse e persistisse os valores…e eu preciso usar o inplace…
Obrigada ![:slight_smile: :slight_smile:](//www.guj.com.br/images/emoji/twitter/slight_smile.png?v=6)
Não consegui fazer com que o dado seja persistido ainda…desisti do JS mas mesmo assim continuo perdida…se alguém por favor puder me ajudar, eu gostaria de saber como fazer para que o item escolhido no <f:selectItem> da combo dos estados seja inserido no banco.
Eu dei um milhão de voltas e acho não cheguei a lugar nenhum na minha classe UsuarioBean.
A minha base é super simples. Declarei estado e cidade como um atributo de usuário e ambos são character varying. Existe apenas a tabela usuarios
. Da combo de cidades está gravando. Segue o código:
package Beans;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.TimeZone;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.Id;
import javax.persistence.Query;
import modelo.Usuario;
import util.DAO;
import util.HibernateUtil;
@ManagedBean //gera os new
@SessionScoped
//@ViewScoped
public class UsuarioBeans {
EntityManager manager = HibernateUtil.getManager();
private Usuario user = new Usuario();
private DAO dao = new DAO();
//SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
private TimeZone tz = TimeZone.getTimeZone("America/Sao_Paulo");
@Id
private Long id;
List<Usuario> lista;
private String nome;
ArrayList<String> cidades;
private String estados;
private String estadoSelecionado = "";
public String getEstados() {
if (estadoSelecionado.equals("RS")) {
estados = "Rio Grande do Sul";
} else if (estadoSelecionado.equals("SC")) {
estados = "Santa Catarina";
} else if (estadoSelecionado.equals("PR")) {
estados = "Paraná";
} else if (estadoSelecionado.equals("SP")) {
estados = "São Paulo";
} else if (estadoSelecionado.equals("RJ")) {
estados = "Rio de Janeiro";
}
return estados;
}
public void setEstados(String estados) {
this.estados = estados;
}
public ArrayList<String> getCidades() {
return cidades;
}
public void setCidades(ArrayList<String> cidades) {
this.cidades = cidades;
}
public String getEstadoSelecionado() {
return estadoSelecionado;
}
public void setEstadoSelecionado(String estadoSelecionado) {
this.estadoSelecionado = estadoSelecionado;
estadoSelecionado = user.getEstado();
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public TimeZone getTz() {
return tz;
}
public void setTz(TimeZone tz) {
this.tz = tz;
}
public Usuario getUser() {
return user;
}
public void setUser(Usuario user) {
this.user = user;
}
public void setId(Long id) {
this.id = id;
if (id != null) {
user = manager.find(Usuario.class, id);
}
}
public Long getId() {
return id;
}
public void newInstance() {
user = new Usuario();
}
public void inserirUsuario() {
manager.getTransaction().begin();
manager.persist(user);
manager.getTransaction().commit();
newInstance();
}
public void carregarCidades() {
cidades = new ArrayList<String>();
if (estadoSelecionado.equals("RS")) {
cidades.add("Passo Fundo");
cidades.add("Marau");
cidades.add("Porto Alegre");
} else if (estadoSelecionado.equals("SC")) {
cidades.add("Florianópolis");
cidades.add("Bombas");
cidades.add("Blumenau");
} else if (estadoSelecionado.equals("PR")) {
cidades.add("Curitiba");
cidades.add("Paranaguá");
cidades.add("Cascavel");
} else if (estadoSelecionado.equals("SP")) {
cidades.add("São Paulo");
cidades.add("Americana");
cidades.add("Campinas");
} else if (estadoSelecionado.equals("RJ")) {
cidades.add("Rio de Janeiro");
cidades.add("Angra dos Reis");
cidades.add("Parati");
}
}
}
inserir.xhtml
<td align="right"><h:outputText value="Estado"></h:outputText></td>
<td>
<p:inplace label="Clique duas vezes" effectSpeed="fast" event="dblclick">
<h:selectOneMenu value="#{usuarioBeans.estadoSelecionado}" valueChangeListener="#{usuarioBeans.user.estado}">
<f:selectItem itemValue="RS" itemLabel="Rio Grande do Sul"></f:selectItem>
<f:selectItem itemValue="SC" itemLabel="Santa Catarina" ></f:selectItem>
<f:selectItem itemValue="PR" itemLabel="Paraná"></f:selectItem>
<f:selectItem itemValue="SP" itemLabel="São Paulo"></f:selectItem>
<f:selectItem itemValue="RJ" itemLabel="Rio de Janeiro"></f:selectItem>
<f:ajax event="change" render="cidades" listener="#{usuarioBeans.carregarCidades}"/>
</h:selectOneMenu>
</p:inplace>
</td>
</tr>
<tr>
<td align="right"><h:outputText value="Cidades"></h:outputText></td>
<td align="right">
<p:inplace label="Clique duas vezes" effectSpeed="fast" event="dblclick" >
<h:selectOneMenu id="cidades" value="#{usuarioBeans.user.cidade}">
<f:selectItems value="#{usuarioBeans.cidades}" />
</h:selectOneMenu>
</p:inplace>
</td>
![:wink: :wink:](//www.guj.com.br/images/emoji/twitter/wink.png?v=6)
Olá!
Não sei se será de muita ajuda mas acredito que se vc fizer algo com o ajax update pode funcionar.
No forum do primefaces eles disseram que seria a melhor forma (talvez a única http://forum.primefaces.org/viewtopic.php?f=3&t=6671)
Vou dar o exemplo do meu caso:
<p:inplace editor="true"
event="dblclick"
cancelLabel="cancelar"
saveLabel="salvar">
<p:inputText value="#{current.name}" required="true"/>
<p:ajax event="save"
listener="#{activityDetailBean.saveModifications}"
update="causaBasicaAcaoControle"/>
</p:inplace>
no bean:
public void saveModifications() {
Object object = JSFUtil.resolveEL(SGIConstants.CURRENT_VAR_COMPONENT);
save(object);
}
O seu save deveria por exemplo pegar os currentEstado e Cidade das comboboxes.
É só uma idéia ![:wink: :wink:](//www.guj.com.br/images/emoji/twitter/wink.png?v=6)