Ola tudo bem? Estou iniciando em jsf,fiz um popup que contem uma lista de itens, quero que ao clicar no item do popup o form pai seja populado,
como posso fzer isso? alguem tem um exemplo?procurei muito e nao encontrei, só usando muito java script, gostaria de saber como fasso utiliando jsf.
Jsf
2 Respostas
Ola davidcs !
Existe um objeto do JSF que se chama ActionEvent, atraves dele voce consegue pegar/guardar a referencia de um elemento value por exemplo.
Ele funciona parecido com o getElementById(""); do JavaScript.
Por exemplo:
public void selecionaItem(ActionEvent event) {
UIComponent link = event.getComponent();
//getElementById(); no JSF
UIParameter param = (UIParameter) link.findComponent("idDoComponente");
BigDecimal ID_ITEM = (BigDecimal) param.getValue();
// logica para popular um objeto aqui
}
Agora é com você !
A logica de popular um objeto esta facil:
- Ja tenho a referencia para um SELECT, ou seja, consigo criar um método que retorne um obejto ITEM passando o ID como referencia. Existem varias formas, DaoGeneric, faclita muito ou um simples simples PreparedStatement.
Existem “n” formas de se fazer isso, por exemplo passando parametros, como a4j:actionparam. E outras e outras!
[ ]s,
Obrigado pela atenção Mateus, na verdade acho que não consegui esplicar direito meu problema, vamos lá , tenho um form de vendas com diversos campos e no campo produto tenho um campo text onde inseri do lado um icone comand Link que abre uma lista de produtos, guando seleciono um produto da lista, quero que seja fechado o popup e que o campo no form de venda seja preenchido, nao uso combo box pois são muitos produtos.
[b]form vendas.jsp[/b]
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Incluir Produtos</title>
</head>
<body >
<f:view>
<h:form>
<h:messages>
<h:outputLabel value="Incluir Vendas"/><h1/>
Codigo:<h:inputText value="#{NewJSFManagedBean.selectedVenda.codigo}"/> <br/>
Endereco:<h:inputText value="#{NewJSFManagedBean.selectedVenda.endereco}"/><br/>
Produto:<h:inputText value="#{NewJSFManagedBean.selectedVenda.produto}">
</h:inputText>
<h:commandLink
target="produto"
value="<...>">
</h:commandLink>
<br/>
Vendedor:<h:selectOneMenu value="#{NewJSFManagedBean.selectedVenda.vendedor}">
<f:selectItems value="#{NewJSFManagedBean.logins}"/>
<f:converter converterId="loginConverter"/>
</h:selectOneMenu><br/>
<h:commandButton value="Cancelar" action= "#{NewJSFManagedBean.finishAddVenda}"/>
<h:commandButton value="Adicionar" action="#{NewJSFManagedBean.finishAddVenda}"/>
</h:messages>
</h:form>
</f:view>
</body>
</html>
Popup produto.jsp
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Produtos</title>
</head>
<body >
<f:view>
<h:form>
<h:dataTable border="1" value="#{Produtofaces.produtos}" var="item">
<h:column>
<f:facet name="header">
<h:outputText value="Codigo"/>
</f:facet>
<h:outputText value="#{item.codigo}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:outputText value="#{item.nome}"/>
</h:column>
</h:dataTable>
</h:form>
</f:view>
</body>
</html>
Como poderia setar o valor do produto do popup no form de vendas ?com o evento que vc passou posso pegar o valor do produto clicado, porem como
setar o NewJSFManegedBean.selectedVenda.produto.
Produto:<h:inputText value="#{NewJSFManagedBean.selectedVenda.produto}">
gostaria de fazer como o Calendario do tomahowk onde abre o popup é selecionado a data e o campo é prenchido.
Desde ja agradeço.