如何在不使用JSF中的隐藏标记的情况下将javascript中的值传递给托管bean属性?

时间:2014-08-12 07:41:36

标签: javascript jsf primefaces portlet

我们想知道如果可以在facelets中的javascript方法中获取托管bean属性值,或者将javascript值传递给托管bean属性但不使用隐藏标记?

当我们搜索它们时,我们看到的是关于使用html隐藏标记或隐藏按钮的点击事件的示例或解决方案。但是当我们需要在managedbean和javascript之间进行大量数据交换时,这种方法对我们没用,因为它需要大量的隐藏标签。

1 个答案:

答案 0 :(得分:3)

您可以像在地图中一样创建具有名称值对的json对象,并将它们作为请求参数发送。您可以使用{j}函数调用p:remoteCommand,如下所示

function sendParams() {
    passToJSFManagedBean ([ {
                  name : 'sno',
                  value : 1
                 },   
                 {
                   name : 'name',
                   value : srikanth
                 }  
               ]);   
} 

以上passToJSFManagedBean应该是远程命令函数的名称,如下所示

 <p:remoteCommand name="passToJSFManagedBean" id="passToJSFManagedBeancmd"
                action="#{myBean.getParams}"
                process="@this" />   

您可以访问托管bean操作中传递的参数

   public void getParams() {
        String sno= FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()  
           .get("sno");    
 //same way you can get name
   }  

希望这有帮助