CLEYSON
Dezembro 4, 2012, 6:54pm
#1
Boa Tarde
Estou tendo problemas com o p:selectOneMenu do primefaces 3.4.2, o mesmo não quer funcionar dentro do dialog, sempre retorna null.
O mesmo código rodando fora do dialog executa de boa. Segue código.
<h:panelGrid columns="2">
<h:outputText value="URL_A:" style="font-weight: bold"/>
<p:selectOneMenu id="city" value="#{treeLayersBean.city}">
<f:selectItem itemLabel="Select City" itemValue="" />
<f:selectItems value="#{treeLayersBean.cities}" />
<p:ajax update="tableLayers,messages" listener="#{treeLayersBean.handleCityChange}" />
</p:selectOneMenu>
</h:panelGrid>
A chamada do meu dialog tem sido através de um commandButton , conforme código abaixo:
<p:commandButton value="GeoServer" icon="ui-icon-document" onclick="dialogLayersGeoserver.show()"></p:commandButton>
Obs: Meu Bean é SessionScope
Já tentei colocar event=“change” no p:ajax,invocar o dialog através de oncomplete=“dialogLayersGeoserver.show()” mas tudo foi em vão!
O mais barato é que o mesmo fonte no meu note roda de boa e na empresa não quer rodar, a única diferença visível é a versão do NetBeans 7.0 (Note), NetBeans 7.1 (Work).
Nesta manhã atualizei meu NetBeans(Work) para 7.2.1 com Mojarra 2.1.6, PrimeFaces 3.4.2 e Glassfish 3.1.2, porém mesmo assim nada!
No note está rodando com Primefaces 3.3.1 e GlassFish 3.1.
Li sobre alguns usuários reclamando sobre o mesmo tópico na net.
Desde já agradeço pela ajuda!
posta o form completo e a classe também para poder dar uma analizada.
CLEYSON
Dezembro 5, 2012, 11:33am
#3
Bom Dia
Segue lógica. Agradeço pela atenção.
Meu index foi feito com os “problemáticos” <p:layout, segue abaixo a chamada para minha página:
<p:layoutUnit position="west" size="300" header="Layers" collapsible="false">
<h:form id="formWest">
<ui:include src="/paginas/gis/teste.xhtml" />
</h:form>
</p:layoutUnit>
Obs: Alguns usuários tem o padrão de declarar os dialog fora do p:layout, eu até o momento utilizo de boa, o único detalhe é acrescentar appendToBody=“true” no dialog.
Segue página:
[code]<ui:composition 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:p=“http://primefaces.org/ui ”>
<p:growl id=“msgs” showDetail=“true”/>
<p:commandButton value=“GeoServer” icon=“ui-icon-document” onclick=“dialogLayersGeoserver.show()”></p:commandButton>
<h:panelGrid columns="2" cellpadding="5">
<p:selectOneMenu id="cityA" value="#{testeBean.city}">
<f:selectItem itemLabel="Select City" itemValue="" />
<f:selectItems value="#{testeBean.cities}" />
<p:ajax update="msgs"
listener="#{testeBean.handleCityChange}" />
</p:selectOneMenu>
</h:panelGrid>
<p:dialog header="Layers Geoserver" widgetVar="dialogLayersGeoserver"
width="820" height="650"
resizable="false" draggable="false" modal="true" appendToBody="true">
<h:panelGrid columns="2" cellpadding="5">
<p:selectOneMenu id="city" value="#{testeBean.city}">
<f:selectItem itemLabel="Select City" itemValue="" />
<f:selectItems value="#{testeBean.cities}" />
<p:ajax update="msgs"
listener="#{testeBean.handleCityChange}" />
</p:selectOneMenu>
<p:separator />
</h:panelGrid>
</p:dialog>
</ui:composition>[/code]
Segue Bean:
[code]import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@SessionScoped
public class TesteBean implements Serializable {
private String city;
private Map<String,String> cities = new HashMap<String, String>();
public TesteBean() {
cities.put("Istanbul", "Istanbul");
cities.put("Ankara", "Ankara");
cities.put("Izmir", "Izmir");
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Map<String, String> getCities() {
return cities;
}
public void setCities(Map<String, String> cities) {
this.cities = cities;
}
public void handleCityChange() {
FacesMessage msg = new FacesMessage("Selected", "City:" + city);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}[/code]
CLEYSON
Dezembro 5, 2012, 4:56pm
#4
Boa Tarde
Voltei meu projeto para primefaces 3.3.1 e tudo voltou a funcionar. :shock:
Outro problema no Primefaces 3.4.2 é o componente ContextMenu
Vou esperar a versão 3.5, no momento a 3.3.1 me atende.