Ola a todos!
Sou novo aqui e estou iniciando estudos do Java com Primefaces e Hibernate. Minha dúvida é a seguinte:
Tenho uma tabela Alarmes e outra Sensores em um relacionamento um-para muitos. Gostaria de, ao selecionar um registro na tabela Alarmes abra um datatable com os Sensores relacionados aquele alarme. Segue imagens de minha aplicação:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:composition template="/template.xhtml">
<ui:define name="title">
<h:outputText value="#{bundle.ListTabAlarmeTitle}"></h:outputText>
</ui:define>
<ui:define name="body">
<h:form id="TabAlarmeListForm">
<p:panel header="Alarmes">
<p:dataTable id="datalist" value="#{tabAlarmeController.items}" var="item"
selectionMode="single" selection="#{tabAlarmeController.selected}"
paginator="true"
rowKey="#{item.alarmeCod}"
rows="10"
rowsPerPageTemplate="10,20,30,40,50"
>
<p:ajax event="rowSelect" update="createButton viewButton editButton deleteButton"/>
<p:ajax event="rowUnselect" update="createButton viewButton editButton deleteButton"/>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeCod}"/>
</f:facet>
<h:outputText value="#{item.alarmeCod}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeUnidade}"/>
</f:facet>
<h:outputText value="#{item.alarmeUnidade}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeReven}"/>
</f:facet>
<h:outputText value="#{item.alarmeReven}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmePib}"/>
</f:facet>
<h:outputText value="#{item.alarmePib}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeIp}"/>
</f:facet>
<h:outputText value="#{item.alarmeIp}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeContrato}"/>
</f:facet>
<p:selectBooleanCheckbox value="#{item.alarmeContrato}" disabled="true"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeNumContrato}"/>
</f:facet>
<h:outputText value="#{item.alarmeNumContrato}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeQuantSensores}"/>
</f:facet>
<h:outputText value="#{item.alarmeQuantSensores}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeSituacao}"/>
</f:facet>
<h:outputText value="#{item.alarmeSituacao}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeObsoleto}"/>
</f:facet>
<p:selectBooleanCheckbox value="#{item.alarmeObsoleto}" disabled="true"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="#{bundle.ListTabAlarmeTitle_alarmeObservacoes}"/>
</f:facet>
<h:outputText value="#{item.alarmeObservacoes}"/>
</p:column>
<f:facet name="footer">
<p:commandButton id="createButton" icon="ui-icon-plus" value="#{bundle.Create}" actionListener="#{tabAlarmeController.prepareCreate}" update=":TabAlarmeCreateForm" oncomplete="PF('TabAlarmeCreateDialog').show()"/>
<p:commandButton id="viewButton" icon="ui-icon-search" value="#{bundle.View}" update=":TabAlarmeViewForm" oncomplete="PF('TabAlarmeViewDialog').show()" disabled="#{empty tabAlarmeController.selected}"/>
<p:commandButton id="editButton" icon="ui-icon-pencil" value="#{bundle.Edit}" update=":TabAlarmeEditForm" oncomplete="PF('TabAlarmeEditDialog').show()" disabled="#{empty tabAlarmeController.selected}"/>
<p:commandButton id="deleteButton" icon="ui-icon-trash" value="#{bundle.Delete}" actionListener="#{tabAlarmeController.destroy}" update=":growl,datalist" disabled="#{empty tabAlarmeController.selected}"/>
<p:commandButton id="viewSensores" icon="ui-icon-search" value="Sensores" update=":TabAlarmeViewForm" action="/tabAlarmeSensores/List" disabled="#{empty tabAlarmeController.selected}"/>
<p:commandButton id="selectButton" icon="ui-icon-search"
title="View" process="@this"
oncomplete="PF('itensDialog').show()" update=":dialogForm:itensDialog">
<f:setPropertyActionListener value="#{tabAlarmeController.selected.alarmeCod}"
target="#{x}" />
</p:commandButton>
</f:facet>
</p:dataTable>
</p:panel>
</h:form>
<h:form id="dialogForm" prependId="true" >
<p:dialog header="Sensores do Alarme" widgetVar="itensDialog" resizable="false"
id="itensDialog" showEffect="fade" modal="false" appendTo="@(body)" width="500">
<p:panel header="Sensores" id="painelsensores">
<p:dataTable id="datalist" value="#{tabAlarmeSensoresController.items}" var="sensor"
selectionMode="single" selection="#{tabAlarmeSensoresController.selected}"
paginator="true"
rowKey="#{sensor.sensorCodigo}"
rows="10"
rowsPerPageTemplate="10,20,30,40,50" draggableColumns="true" >
<p:column headerText="sensor_código">
<h:outputText value="#{sensor.sensorCodigo}"/>
</p:column>
<p:column headerText="sensor_Alarme_código">
<h:outputText value="#{sensor.sensorAlarmeCod}"/>
</p:column>
</p:dataTable>
</p:panel>
</p:dialog>
</h:form>
<ui:include src="Create.xhtml"/>
<ui:include src="Edit.xhtml"/>
<ui:include src="View.xhtml"/>
</ui:define>
</ui:composition>
</html>