Да, это возможно. Как это сделать, зависит от версии PrimeFaces. Вы можете увидеть это в Руководстве пользователя PrimeFaces . До PrimeFaces версии 3.3 синтаксис выглядит следующим образом (скопировано из руководства пользователя 3.2):
3,80 RemoteCommand
...
Передача параметров
Удаленная команда может отправлять динамические параметры следующим образом;
increment({param1:'val1', param2:'val2'});
Он доступен в компоненте поддержки обычным способом. Например. в запросе bean-объекта:
@ManagedProperty("#{param.param1}")
private String param1;
@ManagedProperty("#{param.param2}")
private String param2;
или в методе боба с более широкой областью применения:
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String param1 = params.get("param1");
String param2 = params.get("param2");
Однако у этого подхода был недостаток, заключающийся в том, что нельзя указывать один параметр с несколькими значениями, как это возможно с обычными формами HTML и параметрами HTTP-запроса (который в реальном мире используется, например, в выпадающем списке множественного выбора и группе множественного выбора).
Начиная с PrimeFaces версии 3.3, синтаксис выглядит следующим образом (скопировано из руководства пользователя 3.3):
3,81 RemoteCommand
...
Передача параметров
Удаленная команда может отправлять динамические параметры следующим образом;
increment([{name:'x', value:10}, {name:'y', value:20}]);
Этот способ дает возможность указать несколько значений для одного имени параметра. Параметры с одинарными значениями, как указано выше, доступны так же, как и старый:
@ManagedProperty("#{param.x}")
private int x;
@ManagedProperty("#{param.y}")
private int y;
(примечание: вы можете использовать Integer
в Мохарре, но не в MyFaces, это также совершенно не связано с <p:remoteCommand>
)
или в методе боба с более широкой областью применения:
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
int x = Integer.valueOf(params.get("x"));
int y = Integer.valueOf(params.get("y"));
Если вам нужно указать параметр с несколькими значениями, вы можете сделать это следующим образом:
functionName([{name:'foo', value:'one'}, {name:'foo', value:'two'}, {name:'foo', value:'three'}]);`
с бобом в запросе:
@ManagedProperty("#{paramValues.foo}")
private String[] foos;
или в методе боба с более широкой областью применения:
Map<String, String[]> paramValues = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap();
String[] foos = paramValues.get("foo");
Обновление
Доступ к параметрам в современном CDI JSF, может быть выполнен по-другому, обрисуйте в этот Stackoverflow Q / A