Como obter um objeto preenchido no JavaScript e passa-lo para o ManagedBean?

4 respostas
Silver_Rob16

Ola pessoal, estou com um problema e não consigo resolver. Seguinte:
Tenho um método no javascript chamado salvarProdutoCookie() onde ele preenche um objeto, até ae tudo bem , mas eu quero saber como ele passa o objeto preenchido para o meu ManagedBean. Eu tenho esse site https://www.mkyong.com/jsf2/how-to-pass-new-hidden-value-to-backing-bean-in-jsf/ , ele até serviria para mim, mas no site está usando commandButton, e eu preciso fazer isso usando o radio do input , alguém pode me ajudar?

Segue o código do meu Javascript:

function salvaProdutoCookie(){

var indice = getIndiceChecked();

if ((indice!=-1)&&(indice!=-2)){

//setListaFaixaCookie(document.forms[0].hddCodProduto[indice].value);		
  document.cookie="codProduto="+document.forms[0].hddCodProduto[indice].value;
  document.cookie="nomeProduto="+document.forms[0].hddNomeProduto[indice].value;
  document.cookie="qtdFaixaPpsta="+document.forms[0].hddQtdFaixaPpsta[indice].value;
  document.cookie="numDiasValPpsta="+document.forms[0].hddNumDiasValPpsta[indice].value;
  document.cookie="numMesDesatPpsta="+document.forms[0].hddNumMesDesatPpsta[indice].value;
  document.cookie="dtUltAtualizacao="+document.forms[0].hddDtUltAtualizacao[indice].value;
  document.cookie="cdRespUltimaAtualizacao="+document.forms[0].hddCdRespUltimaAtualizacao[indice].value;
  document.cookie="nomeRespUltimaAtualizacao="+document.forms[0].hddNomeRespUltimaAtualizacao[indice].value;

}else if(indice==-2){

//setListaFaixaCookie(document.forms[0].hddCodProduto.value);
  document.cookie="codProduto="+document.forms[0].hddCodProduto.value;
  document.cookie="nomeProduto="+document.forms[0].hddNomeProduto.value;
  document.cookie="qtdFaixaPpsta="+document.forms[0].hddQtdFaixaPpsta.value;
  document.cookie="numDiasValPpsta="+document.forms[0].hddNumDiasValPpsta.value;
  document.cookie="numMesDesatPpsta="+document.forms[0].hddNumMesDesatPpsta.value;
  document.cookie="dtUltAtualizacao="+document.forms[0].hddDtUltAtualizacao.value;
  document.cookie="cdRespUltimaAtualizacao="+document.forms[0].hddCdRespUltimaAtualizacao.value;
  document.cookie="nomeRespUltimaAtualizacao="+document.forms[0].hddNomeRespUltimaAtualizacao.value;

}else if (indice==-1){

document.cookie="listaFaixas=";
  document.cookie="codProduto=";
  document.cookie="nomeProduto=";			
  document.cookie="qtdFaixaPpsta=";
  document.cookie="numDiasValPpsta=";
  document.cookie="numMesDesatPpsta=";
  document.cookie="dtUltAtualizacao=";
  document.cookie="cdRespUltimaAtualizacao=";
  document.cookie="nomeRespUltimaAtualizacao=";

}

}

segue a parte do meu xhtml onde seto meu objeto:

<h:column>
         <input type="radio" class="optionbutton" name="rdbOption" onclick="javascript:salvaProdutoCookie();" value="#{consultarFaixaProdutoBean.faixaProdutoVO}" /> 
        </h:column>

E no Managed Bean, quero setar o objeto pego no JavaScript aqui:

@Controller
@ManagedBean
@SessionScoped 
public class ConsultarFaixaProdutoBean extends BaseController implements Serializable {

private FaixaProdutoVO faixaProdutoVO;

	/**
	 * @return the faixaProdutoVO
	 */
	public FaixaProdutoVO getFaixaProdutoVO() {
		return faixaProdutoVO;
	}

	/**
	 * @param faixaProdutoVO the faixaProdutoVO to set
	 */
	public void setFaixaProdutoVO(FaixaProdutoVO faixaProdutoVO) {
		this.faixaProdutoVO = faixaProdutoVO;
	}
}

4 Respostas

Silver_Rob16

Heyyy alguém ae???

peczenyj

amigo que cookie endemoniado é esse?

tem limite o que vc pode colocar em um cookie sabia?

Silver_Rob16

Limite? Como assim (de tamanho, valor, etc…)? Bom ele preenche esses dados de um objeto por vez, olha como é o setter e o getter dele:

function setCookie(name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
}

/* This function is used to get cookies */
function getCookie(name) {
	var prefix = name + "=" 
	var start = document.cookie.indexOf(prefix) 

	if (start==-1) {
		return null;
	}
	
	var end = document.cookie.indexOf(";", start+prefix.length) 
	if (end==-1) {
		end=document.cookie.length;
	}

	var value=document.cookie.substring(start+prefix.length, end) 
	return unescape(value);
}

o que esta nesse cookie é exatamente o que eu preciso enviar para um objeto declarado no meu ManagedBean.

Silver_Rob16

Pczenyj , se você souber alguma outra forma de como fazer isso sem a necessidade do cookie também aceitarei, visto que o cookie não é obrigatório, posso dispensar o uso dele sem problemas.

Criado 20 de outubro de 2016
Ultima resposta 26 de out. de 2016
Respostas 4
Participantes 2