Estou com um problema em um projeto, sou novo no java web e primefaces e preciso de uma ajuda. no qual eu clico em um botão de uma picklist, e as informações do item são exibidas no dialog.
O primeiro click sempre resulta em um objeto null pois os eventos estão acontecendo na ordem errada.
Primeiro ocorre o evento do click do botão, que exibe o dialog e depois o select do item da lista que popula o objeto.
A picklist:
<p:pickList id="pickList"
value="#{controller.listaSerivcosModel}" var="s"
itemValue="#{s}" responsive="true" showSourceFilter="true"
showTargetFilter="true" converter="servicoConverter">
<p:ajax event="select" listener="#{controller.onSelect}" />
<p:column style="width:90%;">
<h:outputText id="txtServ" value="#{s.descricao}" />
</p:column>
<p:column>
<p:commandButton id="btnDetalhes"
oncomplete="PF('detalhesOP').show()" update="@form"
icon="fa fa-search" styleClass="ui-button-cancelar"
action="#{controller.prepararDetalhesServico(s.id) }">
<p:tooltip id="toolTipContent" for="btnDetalhes">
<p:panelGrid id="gridDetalhes" columns="2">
<p:outputLabel value="#{bundle.Id}" />
<h:outputText value="#{s.id}" />
</p:panelGrid>
</p:tooltip>
</p:commandButton>
</p:column>
</p:pickList>
<p:dialog id="detalhesPanel" widgetVar="detalhesOP"
showCloseIcon="true">
<p:outputPanel>
<p:panelGrid id="gridDetalhes2" columns="2">
<p:outputLabel value="#{bundle.Id}" />
<h:outputText value="#{controller.objeto.id}" />
</p:panelGrid>
</p:outputPanel>
</p:dialog>
A controller:
public void prepararDetalhesServico(Servico s) {
mostrarDetalhes = true;
}
public void onSelect(SelectEvent event) {
if(mostrarDetalhes){
objeto = (Servico) event.getObject();
}
mostrarDetalhes = false;
}