`
lonvea
  • 浏览: 75426 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSF 中如果获取get请求参数

阅读更多

前沿:使用JSF的难兄难弟们,可能都为JSF中get请求郁闷过。。因为真正意义上的数据提交,在JSF中全部通过post进行。所以get请求,在JSF生命周期中处理确实有些蹩脚。。下面我给大家简单列举几种方式。

 

 

Page部分:

 

<h:commandButton(/Link也可以) value="提交(/浏览)" actionListener="#{homeAction.lookUpListener}" action="#{homeAction.lookUpAction}">

   <f:param id="id" name="id" value="1000"/>

   <!-- 如果你想基于a4j下异步提交参数 -->

   <!--

      <a4j:actionparam name="id" value="1000" id="id"></a4j:actionparam>

   -->


</h:commandButton(/Link)>

 

 

以上()中为可替换部分,你可以使用按钮,当然可以使用连接,不过他们是command类型。

 

静态get链接:

 

<h:outputLink value="...."...><f:param id="id" name="id" value="1000"/></h:outputLink>

 

 

下面给大家介绍一些,如果如何使用参数。

 

 

  1)command组件中使用参数。

 

 

public void lookUpListener(ActionEvent event){
	UIParameter paramId=(UIParameter)event.getComponent().findComponent("id");
	System.out.print(paramId.getValue().toString());
.....	
}

public String lookUpAction(){
    HttpServletRequest request = FacesContext.getCurrentInstance().getExternalContext().getRequest() 

     Integer id = request.getParameter("id");
}

 

   第一,我们把<f:param>作为组件从触发事件的按钮或者链接中查找。以组件的形式处理,这种方式可以接受考虑。当然最好在listener中处理。

 

  第二,我们使用http的方式去考虑,毕竟JSF生命周期的处理,还是基于servlet容器。但是需要走些弯路,从JSF应用容器上下文,获取servlet或者其他三方上下文,然后获取请求。。得到request,那么就很容易获取请求参数了。其实无论是command还是output组件,它的提交数据均可以在http中获取,但是command组件还可以通过listener事件去侦听。

 

 

   2)对于http--get请求

 

 

    在JSF中get请求处理,也无外乎那么一套,如果你是在找不到更好的方案,那你就回归到servlet--http普通的web模式。JSF基于servlet当然能够在任何时候获取http的数据。

 

   对于静态get请求如:http://***.com/home.jspx?id=1000,你可以参看上面的<h:outputLink>

 

   如果你知道JSF的生命周期,那么一切都那么简单。如果你不太清楚,那么就简单的认为在渲染页面的之前,必须首先实例化后台bean,在实例化bean的时候,bean可以获取请求中的数据。。。只要bean不脱离JSF应用管理器,那么http等所有servlet、jsp能干的事情,JSF都给你提供了接口。。。

 

 

 

public class HomeAction {

   /**
    *查询字符串
    */
  private Integer id;//get,setter方法别忘了。

  public HomeAction(){
   //如果JSF准备渲染页面,那么它肯定需要执行构造参数,前提是你定义了这个默认构造函数
    HttpServletRequest request = FacesContext.getCurrentInstance().getExternalContext().getRequest() 
    id = request.getParameter("id");//自己进行类型转换

   
  }
   
}

 

 此时id的值被更新,如果id参数是通过command组件提交的,这个id可以在“更新模型”生命周期之后的阶段周期中被使用:如调用listener方法,action驱动等等。

 

 

 

  3)seam中使用参数,依赖注入是神话

 

   无论你通过何种output/command等传递参数导航,均可使用如下模板:

 

 

......
@requestParamter
private Integer id;//自动类型转化,但是你需要自己祈祷类型正确



public void lookUpAction(){
  //此处可以直接使用id,因为生命周期中此id已经被seam拦截并通过serlvet处理。
   log.info("id:"+id);
}

 

 

如果你对生命周期不太理解,请参见本人的博客。

0
0
分享到:
评论
1 楼 yinlongfei 2010-05-13  
seam提供这个注释真是太爽啦,很方便
@requestParamter 
private Integer id;

相关推荐

    Spring in Action(第二版 中文高清版).part2

    16.4.3 在JSF页面中使用Spring Bean 16.4.4 在JSF中暴露应用程序环境 16.5 Spring中带有DWR的支持Ajax的应用程序 16.5.1 直接Web远程控制 16.5.2 访问Spring管理的Bean DWR 16.6 小结 附录A 装配Spring A.1 ...

    Spring in Action(第二版 中文高清版).part1

    16.4.3 在JSF页面中使用Spring Bean 16.4.4 在JSF中暴露应用程序环境 16.5 Spring中带有DWR的支持Ajax的应用程序 16.5.1 直接Web远程控制 16.5.2 访问Spring管理的Bean DWR 16.6 小结 附录A 装配Spring A.1 ...

    Spring in Action(第2版)中文版

    16.4.3在jsf页面中使用springbean 16.4.4在jsf中暴露应用程序环境 16.5spring中带有dwr的支持ajax的应用程序 16.5.1直接web远程控制 16.5.2访问spring管理的beandwr 16.6小结 附录a装配spring a.1下载spring ...

    Spring中文帮助文档

    使用@RequestParam绑定请求参数到方法参数 13.12.5. 使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多...

    Spring攻略(第二版 中文高清版).part2

    11.1 获取和安装Grails 441 11.1.1 问题 441 11.1.2 解决方案 442 11.1.3 工作原理 442 11.2 创建Grails应用 443 11.2.1 问题 443 11.2.2 解决方案 443 11.2.3 工作原理 443 11.3 Grails插件 447 ...

    Spring攻略(第二版 中文高清版).part1

    11.1 获取和安装Grails 441 11.1.1 问题 441 11.1.2 解决方案 442 11.1.3 工作原理 442 11.2 创建Grails应用 443 11.2.1 问题 443 11.2.2 解决方案 443 11.2.3 工作原理 443 11.3 Grails插件 447 ...

    Spring API

    使用@RequestParam绑定请求参数到方法参数 13.12.5. 使用@ModelAttribute提供一个从模型到数据的链接 13.12.6. 使用@SessionAttributes指定存储在会话中的属性 13.12.7. 自定义WebDataBinder初始化 13.13. 更多...

    java开源包1

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    JAVA上百实例源码以及开源项目

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    JAVA上百实例源码以及开源项目源代码

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    java开源包11

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包2

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包3

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包6

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包5

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包10

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包4

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包8

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包7

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

Global site tag (gtag.js) - Google Analytics