Я использую primefaces 6, я хочу вызвать пустую команду primefaces с Javascript, и я хочу передать ей параметры.
Код удаленной команды выглядит следующим образом:
<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 всегда равны нулю, так как карта не содержит его ключа, как я могу исправить это, чтобы я мог получить правильные значения?
Вы не правильно передаете параметры:
<p:accordionPanel onTabClose="dummyAction([{name1:'value1', name2:'value2'}]); "
Так должно быть:
<p:accordionPanel onTabClose="dummyAction([{'name':'name1',
'value':'name1Value'},{'name':'name2','value':'name2value'}]); "
Вы должны быть уверены, что имена атрибутов ВСЕГДА "имя" и "значение". Например, если вы передаете один параметр, он должен быть:
[{'name':yourParamName, 'value': yourParamterValue}]
Если вы передаете два параметра, это должно быть:
[
{'name':yourFirstParamName, 'value': yourFirstParamterValue},
{'name':yourSecondParamName, 'value': yourSecondParamterValue}
]
Удачи!