我想把值从javascript传递给remoteCommand。如果这是可能的,我如何做到这一点,我如何在支持bean中接收它们?
发布于 2011-08-28 22:31:30
remoteCommandFunctionName({name1:'value1', name2:'value2'});发布于 2013-08-29 19:46:00
是的,这是可能的。如何做到这一点取决于PrimeFaces版本。您可以在PrimeFaces users guide中看到它。
PrimeFaces 3.3或更高版本
从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;(注意:您可以在Mojarra中使用Integer,但不能在MyFaces中使用,这与<p:remoteCommand>__完全无关)
或者在范围更广的bean的方法中:
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'}]);`在请求作用域的bean中:
@ManagedProperty("#{paramValues.foo}")
private String[] foos;或者在范围更广的bean的方法中:
Map<String, String[]> paramValues = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap();
String[] foos = paramValues.get("foo");PrimeFaces 3.2或更早版本
在PrimeFaces版本3.3之前,语法如下(摘自3.2版用户指南):
3.80 RemoteCommand
..。
传递参数
远程命令可以通过以下方式发送动态参数;
increment({param1:'val1', param2:'val2'});
它可以通过通常的方法在支持bean中获得。例如,在请求作用域bean中:
@ManagedProperty("#{param.param1}")
private String param1;
@ManagedProperty("#{param.param2}")
private String param2;或者在范围更广的bean的方法中:
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String param1 = params.get("param1");
String param2 = params.get("param2");然而,这种方法有一个缺点,即您不能指定单个参数和多个值,就像普通的HTML表单和HTTP请求参数一样(这在现实世界中用于多选下拉列表和多选复选框组)。
另请参阅:
发布于 2012-05-22 14:56:00
页面:
<p:remoteCommand name="command" action="#{bean.method}" />JavaScript:
command({param: 'value'});Bean:
public void method() {
String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("param");
}https://stackoverflow.com/questions/7221495
复制相似问题