这个问题在这里已有答案:
我正在使用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,因为地图不包含其键,我怎么能解决这个问题,所以我可以得到正确的值?
您没有正确传递参数:
<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}
]
祝好运!