在JSF页面中使用Javascript调用远程命令设置空值[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我正在使用primefaces 6,我想用Javascript调用primefaces remote命令,我想将参数传递给它。

远程命令代码如下

<h:form>
    <p:remoteCommand name="dummyAction" 
                 actionListener="#{usedController.exec}"/>
</h:form>

然后我尝试在手风琴面板中调用远程命令,如下所示

<p:accordionPanel onTabClose="dummyAction([{name1:'value1', 
name2:'value2'}]); "

我在Managedbean中添加了这个方法

public void exec() {
     FacesContext context = FacesContext.getCurrentInstance();
        Map map = context.getExternalContext().getRequestParameterMap();
        String name1 = (String) map.get("name1");
        String name2 = (String) map.get("name2");
}

我开始调试,我发现字符串name1和name2的值始终为null,因为地图不包含其键,我怎么能解决这个问题,所以我可以得到正确的值?

javascript jsf primefaces
1个回答
0
投票

您没有正确传递参数:

<p:accordionPanel onTabClose="dummyAction([{name1:'value1', name2:'value2'}]); "

它应该是:

<p:accordionPanel onTabClose="dummyAction([{'name':'name1', 
'value':'name1Value'},{'name':'name2','value':'name2value'}]); "

您必须确保属性名称始终为“name”和“value”。例如,如果您传递一个参数,它应该是:

[{'name':yourParamName, 'value': yourParamterValue}]

如果要传递两个参数,则应该是:

[
 {'name':yourFirstParamName, 'value': yourFirstParamterValue}, 
 {'name':yourSecondParamName, 'value': yourSecondParamterValue}
]

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.