Galera montei uma 3 views da seguinte forma.
Listar
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Produto</title>
</h:head>
<h:body>
<p:fieldset legend="Produto">
<h:form id="produtoForm">
<p:commandButton value="Adicionar Registro" icon="ui-icon-plus"
update=":produtoCreateDialogForm"
actionListener="#{produtoBean.resetProduto}"
onclick="incluirProduto.show();" />
<p:dataTable id="produtoTable"
value="#{produtoBean.allProduto}" var="produto"
emptyMessage="Nenhum registro para ser exibido!">
<p:column>
<f:facet name="header">
<h:outputText value="Descrição" />
</f:facet>
<h:outputText value="#{produto.descricao}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Preço" />
</f:facet>
<h:outputText value="#{produto.precoVenda}" />
</p:column>
<p:column>
<p:commandButton icon="ui-icon-pencil"
update=":alterarProdutoForm" onclick="alterarProduto.show();">
<f:setPropertyActionListener
target="#{produtoBean.produto}"
value="#{produto}" />
</p:commandButton>
<p:spacer width="10px" />
<p:commandButton icon="ui-icon-trash"
update=":deletarProdutoForm" onclick="deletarProduto.show();">
<f:setPropertyActionListener
target="#{produtoBean.produto}"
value="#{produto}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
</p:fieldset>
<ui:include src="/produto/dialogs/alterarproduto.xhtml" />
<ui:include src="/produto/dialogs/incluirproduto.xhtml" />
<ui:include src="/produto/dialogs/deletarproduto.xhtml" />
</h:body>
</html>
Incluir
<!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://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:body>
<p:dialog widgetVar="incluirProduto" id="produtoCreateDialogId"
height="250" width="600" modal="true" closable="true"
draggable="false" resizable="false">
<h:form id="produtoCreateDialogForm" prependId="false">
<h:panelGrid columns="2">
<h:outputText value="* Descrição: " />
<h:inputText value="#{produtoBean.produto.descricao}"
required="true" label="Descrição: ">
</h:inputText>
<h:outputText value="* Preço de Custo " />
<h:inputText value="#{produtoBean.produto.precoCusto}"
required="true" label="Preço de Custo ">
</h:inputText>
<p:outputLabel for="grupoProduto" value="Grupo Produto"/>
<p:selectOneMenu id="grupoProduto" effect="fade" value="#{produtoBean.grupoProduto.idGrupoProduto}">
<f:selectItems value="#{produtoBean.grupoProdutos}"/>
</p:selectOneMenu>
<h:outputText value="* Preço de Venda " />
<h:inputText value="#{produtoBean.produto.precoVenda}"
required="true" label="Preço de Venda ">
</h:inputText>
<h:outputText value="Observação " />
<h:inputText value="#{produtoBean.produto.observacaoCardapio}"
required="false" label="Observação ">
</h:inputText>
<p:commandButton value="Gravar" icon="ui-icon-plus"
action="#{produtoBean.createProduto}"
update=":produtoForm:produtoTable"
oncomplete="incluirProduto.hide()" />
<p:commandButton value="Cancelar" icon="ui-icon-cancel"
actionListener="#{produtoBean.resetProduto}"
onclick="incluirProduto.hide();" type="button" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
</html>
Alterar
<!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://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:body>
<p:dialog widgetVar="alterarProduto"
id="alterarProdutoDialogId" height="250" width="600" modal="true"
closable="true" draggable="false" resizable="false">
<h:form id="alterarProdutoForm" prependId="false">
<h:panelGrid columns="2">
<h:outputText value="* Descrição: " />
<h:inputText value="#{produtoBean.produto.descricao}"
required="true" label="Descrição: ">
</h:inputText>
<p:outputLabel for="grupoProdutoAlterar" value="Grupo Produto"/>
<p:selectOneMenu id="grupoProdutoAlterar" effect="fade" value="#{produtoBean.produto.grupoProduto.idGrupoProduto}">
<f:selectItems value="#{produtoBean.grupoProdutos}"/>
</p:selectOneMenu>
<h:outputText value="* Preço de Custo " />
<h:inputText value="#{produtoBean.produto.precoCusto}"
required="true" label="Preço de Custo ">
</h:inputText>
<h:outputText value="* Preço de Venda " />
<h:inputText value="#{produtoBean.produto.precoVenda}"
required="true" label="Preço de Venda ">
</h:inputText>
<h:outputText value="Observação " />
<h:inputText value="#{produtoBean.produto.observacaoCardapio}"
label="Observação ">
</h:inputText>
<p:commandButton value="Alterar" icon="ui-icon-plus"
action="#{produtoBean.updateProduto}"
update=":produtoForm:produtoTable"
oncomplete="alterarProduto.hide()" />
<p:commandButton value="Cancelar" icon="ui-icon-cancel"
actionListener="#{produtoBean.resetProduto}"
onclick="alterarProduto.hide();" type="button" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
</html>
Bean
package br.com.unip.menudroidweb.bean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;
import br.com.unip.menudroidweb.facade.GrupoProdutoFacade;
import br.com.unip.menudroidweb.facade.ProdutoFacade;
import br.com.unip.menudroidweb.model.GrupoProduto;
import br.com.unip.menudroidweb.model.Produto;
@SessionScoped
@ManagedBean (name = "produtoBean")
public class ProdutoBean extends AbstractBean implements Serializable {
private static final long serialVersionUID = -3644787609339087086L;
private Produto produto;
private List<SelectItem> grupoProdutos = new ArrayList<SelectItem>();
private GrupoProduto grupoProduto;
private List<Produto> produtoLista;
private ProdutoFacade produtoFacade;
private GrupoProdutoFacade grupoProdutoFacade;
public ProdutoFacade getProdutoFacade() {
if (produtoFacade == null) {
produtoFacade = new ProdutoFacade();
}
return produtoFacade;
}
public Produto getProduto() {
if (produto == null) {
produto = new Produto();
}
return produto;
}
public GrupoProduto getGrupoProduto() {
if (grupoProduto == null) {
grupoProduto = new GrupoProduto();
}
return grupoProduto;
}
public void setGrupoProduto(GrupoProduto grupoProduto) {
this.grupoProduto = grupoProduto;
}
public GrupoProdutoFacade getGrupoProdutoFacade() {
if (grupoProdutoFacade == null) {
grupoProdutoFacade = new GrupoProdutoFacade();
}
return grupoProdutoFacade;
}
public void setGrupoProdutoFacade(GrupoProdutoFacade grupoProdutoFacade) {
this.grupoProdutoFacade = grupoProdutoFacade;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public void createProduto() {
try {
if (grupoProduto != null){
produto.setGrupoProduto(grupoProduto);
}else{
System.out.println("grupoproduto vazio");
}
getProdutoFacade().createProduto(produto);
closeDialog();
displayInfoMessageToUser("Registro criado com sucesso!");
loadProduto();
resetProduto();
} catch (Exception e) {
keepDialogOpen();
displayErrorMessageToUser("Ocorreu um erro na transação! Tente novamente.");
e.printStackTrace();
}
}
public void updateProduto() {
try {
getProdutoFacade().updateProduto(produto);
closeDialog();
displayInfoMessageToUser("Registro alterado com sucesso!");
loadProduto();
resetProduto();
} catch (Exception e) {
keepDialogOpen();
displayErrorMessageToUser("Ocorreu um erro na transação! Tente novamente.");
e.printStackTrace();
}
}
public void deleteProduto() {
try {
getProdutoFacade().deleteProduto(produto);
closeDialog();
displayInfoMessageToUser("Registro excluído com sucesso!");
loadProduto();
resetProduto();
} catch (Exception e) {
keepDialogOpen();
displayErrorMessageToUser("Ocorreu um erro na transação! Tente novamente.");
e.printStackTrace();
}
}
public List<SelectItem> getGrupoProdutos() {
grupoProdutos.clear();
grupoProdutos.add(new SelectItem(null, "Selecione"));
List<GrupoProduto> obterGrupoProduto = getGrupoProdutoFacade().listAll();
for (int i = 0; i < obterGrupoProduto .size(); i++) {
GrupoProduto gp = obterGrupoProduto.get(i);
SelectItem si = new SelectItem(gp.getIdGrupoProduto(), gp.getDescricao());
grupoProdutos.add(si);
}
return grupoProdutos;
}
public void setGrupoProdutos(List<SelectItem> grupoProdutos) {
this.grupoProdutos = grupoProdutos;
}
public List<Produto> getAllProduto() {
if (produtoLista == null) {
loadProduto();
}
return produtoLista;
}
private void loadProduto() {
produtoLista = getProdutoFacade().listAll();
}
public void resetProduto() {
produto = new Produto();
}
}
Minha duvida é a seguinte, eu cadastro um produto com o grupo de produto XXXX por exemplo
como eu faço para quando eu clicar em alterar o SelectOneMenu venha com o produto XXXX marcado ao invés de “Selecione”
Valeu.