Как вы передаете параметры (из javascript) в remoteCommand (и затем отправляете его на поддержку beans)?

Для передачи параметров от JS до p:remoteCommand (предоставляемых с помощью простых поверхностей) вы можете использовать это:

remoteCommandFunctionName({name1:'value1', name2:'value2'});

После этого, как вы получаете этот набор параметров в remoteCommand для отправки его на резервную копию beans?

Ответ 1

Бесстыдно подключить мой ответ, потому что мне стоит часа решить эту проблему в PrimeFace 3.3. Решение состоит в том, чтобы передать ваши аргументы в виде массива из {name: < param-name > , value: < param-value > }.

Как и в ответе Нейко, вызов должен быть изменен на:

remoteCommandFunctionName([{name: 'name1', value: 'value1'}, {name: 'name2', value: 'value2'}]);

Ответ 2

Если вы определили удаленную команду следующим образом:

<p:remoteCommand name="remoteCommandFunctionName" 
                 actionListener="#{myBean.exec}"/>

И у вас есть вызов метода Javascript с параметрами:

remoteCommandFunctionName({name1:'value1', name2:'value2'});

Вам не нужно указывать параметры, переданные вызову метода Javascript в remoteCommand. Я думаю, что вам понадобятся эти параметры в базе данных. Вы можете использовать карту параметров запроса, чтобы получить значения параметров, переданных в вызове JavaScript в методе bean:

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

Ответ 3

Решение от instcode работает в формате 4.0

XHTML

<p:remoteCommand name="remoteCommandFunctionName" actionListener="#{myBean.exec}"/>

Bean

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

JavaScript

remoteCommandFunctionName([{name: 'name1', value: 'value1'}, {name: 'name2', value: 'value2'}]);

Ответ 4

Я пробовал предыдущие решения с первичками 4.0, но они не работали для меня.

Итак, в качестве обходного пути мне пришлось поставить a <h:inputHidden> и установить значение в свойство ManagedBean, и непосредственно перед вызовом <p:remoteCommand> я устанавливаю значение этого h: inputHidden (используя jQuery) и вызываю p: remoteCommand (при этом удаленная команда обрабатывает h: inputHidden)

FormBean.java

@ManagedBean(name = "formBean")
@ViewScoped
public class FormBean {

  private String myValue;

  public String getMyValue() {
   return myValue;
  }

  public void setMyValue(String myValue) {
      this.myValue = myValue;
  }

  public void remoteAction() {
     someAction(myValue);
  }

}

form.xhtml

.....
<p:remoteCommand name="remoteAction" actionListener="#{formBean.remoteAction()}" process="@this myValueHidden" />

<h:inputHidden id="myValueHidden" value="#{formBean.myValue}" />
.....

form.js

function onClickOfSomeButton() {
$('#formName\\:myValueHidden').val('myValue test value');
  remoteAction();   
}

ИЗМЕНИТЬ

Также это отлично работает.

remoteAction([{name: 'name1', value: 'value1'}, {name: 'name2', value: 'value2'}]);

Надеюсь, что это поможет...