JSF拦截ajax请求并传递参数方法

  我们可以利用f:ajax做一些简单的ajax操作,但是遇到复杂的逻辑,它不能简单的去实现,jsf提供了一种方法,可以调用它内部的js方法去实现复杂的逻辑。

  首先要在页面引入jsf的js文件:

1 <h:outputScript library="javax.faces" name="jsf.js" />

这是一种固定的写法。

然后就是在组件中调用,示例性代码如下:

 1 <h:commandButton id="request" value="ajax.request" actionListener="#{bean.changeId}" onclick="jsf.ajax.request(
 2         this,event,
 3         {render:'ids',
 4             execute:'request',
 5             x:'bigbang',
 6             onevent:function(event){
 7                 alert(event.status);
 8             }});return false;">
 9     
10 </h:commandButton>

参数说明:
this:指代当前标签对象;
event:固定写法,指代当前方法
render:要渲染的组件ID
execute:请求组件的标识符,触发事件的对象
x:请求参数名,key-value形式
onevent:请求回调参数,参数event有三个状态,即begin,complete,success。

下一步是在bean里面取得传入的参数,示例性代码如下:

1 public void changeId(){
2         ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
3         String index = externalContext.getRequestParameterMap().get("x");
4 }

 

posted @ 2015-03-23 12:05  BigBang92  阅读(1033)  评论(0编辑  收藏  举报