2013-06-28 2 views
3

Я хочу передать параметр узел функции doAction, который будет вызываться удаленной командой, как ее передать? Предположим, что узел имеет атрибуты имя и тип и я хочу использовать их в doAction, как передать переменные?Как передать параметр удаленной команде в тэсте?

Спасибо!

public static class node { 
     String name; 
     String type; 

     //setters getters etc... 
} 

<p:remoteCommand name="doWhatYouWant" action="#{managedBean.doAction}" /> 

<p:treeTable value="#{managedBean.tree}" var="node"> 
<p:column> 
     <p:commandLink value="Invoke action" onclick="doWhatYouWant([params...])" /> 
</p:column> 
</p:tree> 

public void doAction() { 
     // do something with var="node" 
} 
+0

Пожалуйста, пост код DoAction и формат, который вы используете для Params. – user1983983

+0

@ user1983983 updated – ethanjyx

+0

Возможно, вы переусердствовали с проблемой, или я не понимаю вашу озабоченность. Вы можете просто передать аргумент с помощью '' в теге '' и выбрать параметры в методе бэканга, так же, как и любой другой параметр – kolossus

ответ

5

Я решил эту проблему с

<p:remoteCommand name="doWhatYouWant" action="#{managedBean.doAction}" /> 
... 
<p:commandLink value="Invoke action" 
    onclick="doWhatYouWant(
      [{name:'n', value:'#{node.name}'}, 
      {name:'t', value:'#{node.type}'}])" /> 

В опорном компоненте:

public void doAction() { 
    FacesContext context = FacesContext.getCurrentInstance(); 
    Map<String, String> map = context.getExternalContext().getRequestParameterMap(); 
    String name = map.get("n"); // name attribute of node 
    String type = map.get("t"); // type attribute of node 
    ... 
}