pessoal estou precisando de ajuda, ja estou a 1 dia nisso e nao descobri o erro;
o que acontece tenho uma pag digitaliza.xhtml onde eu renderizo varias compontes, o que ocorre é que quando eu seleciono um item no selectonemenu, carrega o proximo com ajax e o usuario aperta o botao e manda um submit pro meu managerBean… la eu recupero o id primeiro select e o do segundo sem problemas entao dou um update nos componetes de baixo e renderizo os campos, quando o preencho estes camposeu perco o id select 1 e do select 2… vou postar o codigo e tentar explicar
melhor.
lembrando que estou usando viewscope
xhtml
<!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"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:a="http://java.sun.com/jsp/jstl/functions">
<!-- Editando o Css dos componetes do primefaces -->
<h:head>
<style>
.ui-widget,
.ui-widget .ui-widget {
font-size: 12px !important;
}
</style>
</h:head>
<p:layout fullPage="true">
<p:layoutUnit position="north" size="100" header="Top" resizable="false" closable="false" collapsible="false">
<h:outputText value="Top unit content." />
</p:layoutUnit>
<p:layoutUnit position="west" size="620" resizable="false" closable="false" collapsible="false" effect="drop">
<h:panelGrid columns="1">
<h:form id="form" >
<p:ajaxStatus style="width:16px;height:16px;" id="ajaxStatusPanel">
<f:facet name="start">
<h:graphicImage value="/img/loading.gif" />
</f:facet>
<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>
<p:growl id="msgs" showDetail="true" />
<p:panel header="Double Combo" style="height:auto;width:600px;">
<h:panelGrid columns="2" cellpadding="5">
<h:outputLabel value="Cliente:" />
<p:selectOneMenu id="cliente" value="#{clienteBean.cliente.id}">
<f:selectItem itemLabel="Selecione o Cliente" itemValue="" />
<f:selectItems value="#{clienteBean.lcliente}"
var="cliente" itemLabel="#{cliente.nome} - #{cliente.vccodCliente}" itemValue="#{cliente.id}" />
<p:ajax update="custo" listener="#{clienteBean.montaComboCentroCusto}"/>
</p:selectOneMenu>
<h:outputLabel value="N° lote:" />
<h:inputText value="#{ClienteBean.numLote}"></h:inputText>
<h:outputLabel value="Centro de Custo:" />
<p:selectOneMenu id="custo" value="#{clienteBean.idCusto}">
<f:selectItem itemLabel="Selecione o Centro de Custo" itemValue="" />
<f:selectItems value="#{clienteBean.lcusto}"
var="custo" itemLabel="#{custo.vcdescriacao_cc}" itemValue="#{custo.nmcod_cc}"/>
<h:panelGroup>
<f:facet name="start">
<h:graphicImage value="/img/loading.gif" />
</f:facet>
</h:panelGroup>
</p:selectOneMenu>
</h:panelGrid>
<p:commandButton type="Submit" value="Processar" actionListener="#{clienteBean.renderizaCamposBusca}" ajax="true"
update="painelIframe,indexador" />
</p:panel>
</h:form>
</h:panelGrid>
<h:panelGrid rendered="true" >
<h:form id="formIndexador" prependId="false">
<h:messages/>
<h:panelGrid columns="1">
<p:panel header="Indexadores" style="margin-bottom:10px;height:auto;width:500px;" rendered="true" id="indexador">
<h:inputText value="#{clienteBean.idCusto}" />
<h:inputText value="#{clienteBean.cliente.id}" />
<h:dataTable id="basic" var="index" value="#{clienteBean.lindex}" binding="#{ClienteBean.dataTable}" >
<p:column>
<h:outputLabel value="#{index.label}: " rendered="true" />
<p:inputText value="#{index.textInput}" rendered="#{index.isinput}" />
<h:panelGroup>
<p:inputText value="#{index.numini}" rendered="#{index.isinm}">
<f:convertNumber integerOnly="true" />
</p:inputText>
<h:outputLabel value="até: " rendered="#{index.isinm}" />
<p:inputText value="#{index.numfim}" rendered="#{index.isinm}">
<f:convertNumber integerOnly="true" />
</p:inputText>
</h:panelGroup>
<p:inputTextarea value="#{index.textoArea}" rendered="#{index.istxt}" style="width:300px" />
<p:inputText value="#{index.textInput}" rendered="#{index.isnum}" >
<f:convertNumber integerOnly="true" />
</p:inputText>
<h:panelGroup>
<h:panelGrid columns="1">
<p:calendar rendered="#{index.isidt}" style="width:10px;" value="#{index.dataini}" />
<h:outputLabel value="até: " rendered="#{index.isidt}" />
<p:calendar rendered="#{index.isidt}" style="width:10px;" value="#{index.datafim}"/>
</h:panelGrid>
</h:panelGroup>
<h:outputLabel value="#{index.data} " rendered="#{index.isdat}" />
<p:calendar rendered="#{index.isdat}" style="width:10px;" value="#{index.data}"/>
<p:selectOneMenu rendered="#{index.iscombo}" value="#{index.selecionado}">
<f:selectItems value="#{index.lcombo}" var="combo" itemLabel="#{combo.opcao}" itemValue="#{combo.opcao}" />
</p:selectOneMenu>
</p:column>
</h:dataTable>
<br />
<p:commandButton type="Submit" value="salvar" ajax="false" action="#{ClienteBean.salvarIndexadores}" />
</p:panel>
</h:panelGrid>
</h:form>
</h:panelGrid>
</p:layoutUnit>
<p:layoutUnit position="center" visible="true">
<h:panelGrid id="painelIframe" width="100%">
<iframe src="#{clienteBean.url}" width="100%" frameborder="0" name="rel" id="pdf" style="height:630px;" scrolling="auto" />
<h:outputText value="Total de páginas: #{clienteBean.totalPgPdf}" />
<h:inputText value="#{clienteBean.url}" />
</h:panelGrid>
</p:layoutUnit>
<p:layoutUnit position="south" size="100" header="Bottom" resizable="false" closable="false" collapsible="false">
<h:outputText value="South unit content." />
</p:layoutUnit>
</p:layout>
</html>
ManagerBean:
package br.com.agm.manager;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.component.html.HtmlPanelGroup;
import br.com.agm.bean.CentroCusto;
import br.com.agm.bean.Cliente;
import br.com.agm.bean.Combo;
import br.com.agm.bean.ContCX;
import br.com.agm.bean.Documento;
import br.com.agm.bean.Indexador;
import br.com.agm.business.CentroCustoBusiness;
import br.com.agm.business.ClienteBusiness;
import br.com.agm.business.DocumentoBusiness;
import br.com.agm.business.IndexacaoBusiness;
@ManagedBean(name="clienteBean")
@ViewScoped
public class ClienteBean implements Serializable{
private static final long serialVersionUID = 1L;
private Cliente cliente = new Cliente();
private Documento documento = new Documento();
private CentroCusto custo = new CentroCusto();
private Indexador index;
private Combo combo;
private ContCX cx;
private HtmlDataTable dataTable;
private HtmlPanelGroup group;
private List<Combo> lcombo = new ArrayList<Combo>();
private List<CentroCusto> lcusto = new ArrayList<CentroCusto>();
private List<Cliente> lcliente = new ArrayList<Cliente>();
private List<Indexador> lindex = new ArrayList<Indexador>();
private List<Documento> ldoc = new ArrayList<Documento>();
private List<String> ldocumentos = new ArrayList<String>();
private String idCusto;
private String idCliente;
private int totalPgPdf;
private String numlote;
private String url;
private boolean layout = false;
@PostConstruct
public void init(){
montaComboCliente();
}
/**
* Metodo que preenche o dropdown com
* todos os clientes cadastrados.
*/
public void montaComboCliente(){
try {
ClienteBusiness clienteBusiness = ClienteBusiness.getInstance();
lcliente = clienteBusiness.montaCombo();
} catch (Exception e){
System.out.println();
}
}
public String Url(String url){
String src = url;
return src;
}
/**
* Baixa o documento e exibe dentro de um iframe
*/
public void baixarDocumento(){
String documento;
try{
DocumentoBusiness documentoBusiness = DocumentoBusiness.getInstance();
//ClienteBusiness clienteBusiness = ClienteBusiness.getInstance();
//Cliente novoCliente = clienteBusiness.buscaCliente(cliente);
documento = documentoBusiness.buscaDocumentoFtp();
List<Documento> ldoc = documentoBusiness.buscaDocumento(documento);
totalPgPdf = documentoBusiness.calculaQuantidadePaginas(documento);
url = Url(ldoc.get(0).getNome());
}catch(Exception e){
System.out.println("erro nso metodo " +e.getMessage());
}
}
public void listaDocumentos(){
String documento;
DocumentoBusiness documentoBusiness = DocumentoBusiness.getInstance();
ldocumentos = documentoBusiness.listaDocsFTP();
}
public void nextPdf(){
DocumentoBusiness documentoBusiness = DocumentoBusiness.getInstance();
//documentoBusiness.
}
/**
* Metodo que preenche o componte de Select,
* com os centro de custos
*/
public void montaComboCentroCusto(){
try {
custo.setNmcod_cc(idCusto);
//cliente.setId(idCliente);
CentroCustoBusiness centroCustoBusiness = CentroCustoBusiness.getInstance();
lcusto = centroCustoBusiness.montaCombo(cliente);
} catch(Exception e){
System.out.println(e.getMessage());
}
}
/**
* Renderizo os campos de busca do cliente selecionado
*/
public void renderizaCamposBusca(){
IndexacaoBusiness indexBusiness = IndexacaoBusiness.getInstance();
try {
custo.setNmcod_cc(idCusto);
cliente.setCusto(custo);
lindex = indexBusiness.montaCampoIndex(custo, cliente);
setLindex(lindex);
setLayout(true);
baixarDocumento();
} catch(Exception e){
System.out.println("metodo Renderiza: "+e.getMessage());
}
}
/**
* metodo que adicona um novo documento digitalizado
* @return
*/
public String salvarDocumento(){
try{
DocumentoBusiness documentoBusiness = DocumentoBusiness.getInstance();
documentoBusiness.salvarDocumento(documento, cliente);
//documentoBusiness.moveApaga(documento, cliente);
}catch(Exception e){
System.out.println("erro ao salvar o documento"+e.getMessage());
}
return "/digitaliza?faces-redirect=true";
}
@SuppressWarnings("unchecked")
/**
* Pego os dados digitado pelo usuario no
* campos indexadores e gravo na tabela tbcont_cx.
*/
public void salvarIndexadores(){
cx = new ContCX();
cliente.setCusto(custo); // esses objetos vem nulos, sendo que no sbmit anterio ele vinha preenchido com o valor dos selects, nao sei pq perco estes valores.
cx.setCliente(cliente);
IndexacaoBusiness indexacaoBusiness = IndexacaoBusiness.getInstance();
List<Indexador> lidx = (List<Indexador>) dataTable.getValue();
indexacaoBusiness.insereIndexadores(lidx,cx);
salvarDocumento();
}
/** Metodos Get e Set padrão do JSF*/
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public List<Cliente> getLcliente() {
return lcliente;
}
public void setLcliente(List<Cliente> lcliente) {
this.lcliente = lcliente;
}
public CentroCusto getCusto() {
return custo;
}
public void setCusto(CentroCusto custo) {
this.custo = custo;
}
public List<CentroCusto> getLcusto() {
return lcusto;
}
public void setLcusto(List<CentroCusto> lcusto) {
this.lcusto = lcusto;
}
public Indexador getIndex() {
return index;
}
public void setIndex(Indexador index) {
this.index = index;
}
public List<Indexador> getLindex() {
return lindex;
}
public void setLindex(List<Indexador> lindex) {
this.lindex = lindex;
}
public List<Documento> getLdoc() {
return ldoc;
}
public void setLdoc(List<Documento> ldoc) {
this.ldoc = ldoc;
}
public Documento getDocumento() {
return documento;
}
public void setDocumento(Documento documento) {
this.documento = documento;
}
public Combo getCombo() {
return combo;
}
public void setCombo(Combo combo) {
this.combo = combo;
}
public List<Combo> getLcombo() {
return lcombo;
}
public void setLcombo(List<Combo> lcombo) {
this.lcombo = lcombo;
}
public HtmlDataTable getDataTable() {
return dataTable;
}
public void setDataTable(HtmlDataTable dataTable) {
this.dataTable = dataTable;
}
public String getIdCusto() {
return idCusto;
}
public void setIdCusto(String idCusto) {
this.idCusto = idCusto;
}
public HtmlPanelGroup getGroup() {
return group;
}
public void setGroup(HtmlPanelGroup group) {
this.group = group;
}
public int getTotalPgPdf() {
return totalPgPdf;
}
public void setTotalPgPdf(int totalPgPdf) {
this.totalPgPdf = totalPgPdf;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public boolean isLayout() {
return layout;
}
public void setLayout(boolean layout) {
this.layout = layout;
}
public String getNumLote() {
return numlote;
}
public void setNumLote(String numLote) {
this.numlote = numLote;
}
public String getIdCliente() {
return idCliente;
}
public void setIdCliente(String idCliente) {
this.idCliente = idCliente;
}
public ContCX getCx() {
return cx;
}
public void setCx(ContCX cx) {
this.cx = cx;
}
}
pessoal se ficou muuito confuso me repondam que eu tento explicar melhor…
obrigado a todos!!