0

我刚刚将我的 primefaces 库从 3.1.1 升级到 3.4.1,但不幸的是无法从我的 bean 中的 FacesContext 的请求参数映射中获取参数。

下面是我的代码片段。

xhtml 文件:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:p="http://primefaces.org/ui">

<h:head>
    <title>Facelet Title</title>
</h:head>   
<h:form>
    <p:remoteCommand name="setData" actionListener="#{serviceClass.setrealData()}"/>
</h:form>
 <script>
        $(document).ready(function(){
            setData({codes:'J203,J200,J212,J211,J210',fields:'SNAME,SPOT,PERC,POINTS'});
        });
 </script>
</html>

豆:

@ManagedBean
@SessionScoped

public class ServiceClass {

    /** Creates a new instance of ServiceClass */
    public ServiceClass() {
    }

    public void setrealData(){
        FacesContext fc = FacesContext.getCurrentInstance();
        Map map2 = fc.getExternalContext().getRequestParameterMap();
        String newCodes = (String) map2.get("codes");
        System.out.println("New codes ::"+newCodes);
    }
}
4

1 回答 1

0

传递给 setData javascript 函数的参数不正确。您似乎放错了分隔每个键值对的大括号。

本来应该:

<script>
    $(document).ready(function(){
        setData([{codes:'J203,J200,J212,J211,J210'} , {fields:'SNAME,SPOT,PERC,POINTS'}]);
    });
</script>

使用这种格式,您应该能够从请求映射中检索(代码和字段)。代码应该产生一个字符串"J203,J200,J212,J211,J210",而字段应该产生"SNAME,SPOT,PERC,POINTS"

于 2013-01-12T16:27:15.440 回答