How Can I pass JavaScript Object for JSF Managed Bean

时间:2016-10-20 12:39:11

标签: javascript java jsf-2

I would like to know how I Can pass a JavaScript Object for my Managed Bean. in this link https://www.mkyong.com/jsf2/how-to-pass-new-hidden-value-to-backing-bean-in-jsf/ explain, but isn't that I need, because I want to try fill it through the input type radio tag. Follow my code below:

My JavaScript Method:

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=";       

}
}

follows part of my xhtml where set my object:

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

And in the Managed Bean, I want to set the object caught in JavaScript here:

@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;
    }
}

1 个答案:

答案 0 :(得分:0)

罗布森,据我所知,没有神奇的解决方案。您必须序列化您的javascript对象并将JSON字符串放在附加到ManagedBean属性的输入上,然后将JSON字符串反序列化为Java对象。

您也可以使用转换器来处理此序列化/反序列化过程。

干杯