如何将javascript中的值传递给托管bean属性,而不使用JSF中的隐藏标记

How to pass a value inside javascript to managed bean property without using hidden tags in JSF?

本文关键字:JSF 隐藏 属性 javascript 值传 bean      更新时间:2023-09-26

我们想知道是否有可能在facelets中的javascript方法中获得托管bean属性值或将javascript值传递给托管bean属性,但不使用隐藏标签?

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

您可以像在map中那样创建具有名称值对的json对象,并将它们作为请求参数发送。你可以有一个p:remoteCommand,它可以从你的javascript函数调用,像下面

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
   }  

希望能有所帮助