首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将参数从JavaScript传递给p:remoteCommand

将参数从JavaScript传递给p:remoteCommand
EN

Stack Overflow用户
提问于 2011-08-28 22:14:03
回答 6查看 74.6K关注 0票数 52

我想把值从javascript传递给remoteCommand。如果这是可能的,我如何做到这一点,我如何在支持bean中接收它们?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-08-28 22:31:30

代码语言:javascript
复制
remoteCommandFunctionName({name1:'value1', name2:'value2'});
票数 26
EN

Stack Overflow用户

发布于 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}]);

这种方式提供了在单个参数名称上指定多个值的可能性。像上面这样具有单个值的参数的使用方式与旧方法相同:

代码语言:javascript
复制
@ManagedProperty("#{param.x}")
private int x;

@ManagedProperty("#{param.y}")
private int y;

(注意:您可以在Mojarra中使用Integer,但不能在MyFaces中使用,这与<p:remoteCommand>__完全无关)

或者在范围更广的bean的方法中:

代码语言:javascript
复制
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
int x = Integer.valueOf(params.get("x"));
int y = Integer.valueOf(params.get("y"));

如果您需要指定一个具有多个值的参数,则可以执行以下操作:

代码语言:javascript
复制
functionName([{name:'foo', value:'one'}, {name:'foo', value:'two'}, {name:'foo', value:'three'}]);`

在请求作用域的bean中:

代码语言:javascript
复制
@ManagedProperty("#{paramValues.foo}")
private String[] foos;

或者在范围更广的bean的方法中:

代码语言:javascript
复制
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中:

代码语言:javascript
复制
@ManagedProperty("#{param.param1}")
private String param1;

@ManagedProperty("#{param.param2}")
private String param2;

或者在范围更广的bean的方法中:

代码语言:javascript
复制
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String param1 = params.get("param1");
String param2 = params.get("param2");

然而,这种方法有一个缺点,即您不能指定单个参数和多个值,就像普通的HTML表单和HTTP请求参数一样(这在现实世界中用于多选下拉列表和多选复选框组)。

另请参阅:

票数 90
EN

Stack Overflow用户

发布于 2012-05-22 14:56:00

页面:

代码语言:javascript
复制
<p:remoteCommand name="command" action="#{bean.method}" />

JavaScript:

代码语言:javascript
复制
command({param: 'value'});

Bean:

代码语言:javascript
复制
public void method() {
    String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("param");
}
票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7221495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档