Raj*_*pta 48 javascript parameters jsf primefaces remotecommand
我想remoteCommand从javascript 传递价值.如果可以的话,我怎么能这样做,如何在支持bean中接收它们?
Bal*_*usC 82
对的,这是可能的.如何做到这一点取决于PrimeFaces版本.您可以在PrimeFaces用户指南中看到它.在 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;
Run Code Online (Sandbox Code Playgroud)
或者在更广泛的范围豆的方法中:
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String param1 = params.get("param1");
String param2 = params.get("param2");
Run Code Online (Sandbox Code Playgroud)
然而,这种方法的缺点在于,您无法使用普通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;
Run Code Online (Sandbox Code Playgroud)
(注意:你可以Integer在Mojarra中使用,但不能在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"));
Run Code Online (Sandbox Code Playgroud)
如果需要指定具有多个值的参数,则可以按如下方式执行:
functionName([{name:'foo', value:'one'}, {name:'foo', value:'two'}, {name:'foo', value:'three'}]);`
Run Code Online (Sandbox Code Playgroud)
在请求范围内的bean:
@ManagedProperty("#{paramValues.foo}")
private String[] foos;
Run Code Online (Sandbox Code Playgroud)
或者在更广泛的范围豆的方法中:
Map<String, String[]> paramValues = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap();
String[] foos = paramValues.get("foo");
Run Code Online (Sandbox Code Playgroud)
访问现代CDI JSF中的参数可以以不同的方式完成,在此Stackoverflow Q/A中进行概述
Joe*_*ard 58
页:
<p:remoteCommand name="command" action="#{bean.method}" />
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
command({param: 'value'});
Run Code Online (Sandbox Code Playgroud)
豆:
public void method() {
String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("param");
}
Run Code Online (Sandbox Code Playgroud)
Cag*_*ici 25
remoteCommandFunctionName({name1:'value1', name2:'value2'});
Run Code Online (Sandbox Code Playgroud)
将@BalusC @ Joel的帖子结合起来作为一个功能性的例子
<h:form>
<p:remoteCommand name="rcName" update="msgs" actionListener="#{remoteCommandView.beanMethod}" />
<p:growl id="msgs" showDetail="true" />
<p:commandButton type="button" onclick="rcName([{name:'model', value:'Buick Encore'}, {name:'year', value:2015}]);" value="Pass Parameters 1" /><br/>
<p:commandButton type="button" onclick="clicked();" value="Pass Parameters 2" />
</h:form>
<script type="text/javascript">
//<![CDATA[
function clicked(){
rcName([{name:'model', value: 'Chevy Volt'}, {name:'year', value:2016}]);
}
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64005 次 |
| 最近记录: |