`
lonvea
  • 浏览: 76030 次
  • 性别: 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;

相关推荐

    JSF中文教程+JSF参数传递方式

    例如,`#{param['myParam']}`可以用来获取请求参数,而`#{sessionScoped.bean.property}`则可以访问会话中的属性。 3. **事件参数传递**:JSF支持事件驱动的编程模型,如`valueChange`事件。当用户界面组件的值发生...

    jsf传递参数的说明

    在JSF(JavaServer Faces)框架中,参数...总结来说,JSF中参数传递的核心在于`f:param`标签的使用,以及在后台通过不同方式获取这些参数。通过熟练掌握这些技巧,开发者能够更好地在JSF应用中实现数据交互和页面导航。

    JSF参数传递doc

    在每个请求中创建新的Request Bean是安全的,但如果多个请求共享同一个Bean,可能会引发混乱。 通常,JSF页面间的参数传递应该遵循以下原则: - 避免直接操作`HttpServletRequest`和`HttpSession`,以保持代码的...

    JSF文件下载实现

    示例代码显示了如何从请求参数中获取文件名,然后调用`FileUtils.downloadFile`方法。 7. **JSF与JSP的集成**: 在JSF页面中,可以利用`&lt;h:outputLink&gt;`组件结合JSP页面来实现文件下载。`&lt;h:outputLink&gt;`的`value`...

    JSF实例源代码下载

    7. **FacesContext**:这是JSF的核心类,它提供了与当前请求相关的所有信息,包括请求参数、视图状态、消息等。 8. **转换和验证**:JSF允许在客户端和服务器端进行数据验证,确保输入的数据符合预期格式。同时,...

    《JSF自定义组件》

    - **套用请求值(Apply Request Values)**:在这个阶段,每个JSF组件都会从HTTP请求中获取相应的参数值,并更新组件的属性。如果组件设置了`immediate="true"`,则会立即处理任何相关事件,并跳过后面的阶段直接...

    JSF API

    FacesContext是JSF框架中的核心类,它封装了与请求相关的所有信息,包括请求参数、视图状态、消息等。开发人员可以通过FacesContext获取当前请求的状态和执行各种操作。 4. **Managed Beans** Managed Beans是JSF...

    各种jsf标签Java语言

    在每个阶段,JSF都会执行特定的任务,如解析请求参数、执行验证规则、更新Bean属性等。 ### 自定义标签库 JSF允许开发者创建自己的组件库,通过定义新的UI组件标签来扩展其功能。这些标签可以封装复杂的逻辑,提高...

    jsf自定义组件.pdf

    - **套用请求值(Apply Request Values)**:在这个阶段,每个JSF组件都会从HTTP请求中获取相应的参数值,并更新组件的值。如果组件设置了`immediate="true"`,则会立即处理任何关联的事件,并跳过后续阶段直接绘制...

    jsf简介-简约介绍+实例代码

    2. **应用请求值和验证**:框架将请求参数应用到组件的值,然后进行数据验证。 3. **更新模型值和处理事件**:如果验证成功,JSF会更新模型对象的值,并处理任何由用户触发的事件。 4. **呈现响应**:最后,JSF生成...

    JSF教程

    JSF遵循一系列预定义的生命周期阶段来处理HTTP请求: 1. **恢复视图**: JSF查找与请求关联的视图状态。 2. **应用请求值**: 用户输入的数据被绑定到Managed Bean的属性。 3. **过程验证**: 对输入数据进行验证,如果...

    JSF技术总结文档.doc

    JSF的配置文件默认为`faces-config.xml`,但可以通过在`web.xml`中设置`javax.faces.CONFIG_FILES`参数来自定义配置文件的位置和名称,如: ```xml &lt;param-name&gt;javax.faces.CONFIG_FILES &lt;param-value&gt;/WEB-...

    学习中写的jsf实现的增删改查示例

    在处理CRUD操作时,可以通过FacesContext获取HTTP请求参数,或者设置响应信息。 8. **AJAX支持**: JSF提供了内置的AJAX支持,通过f:ajax标签可以实现部分页面的异步刷新,这样在执行CRUD操作后,只有受影响的部分...

    Java代码中使用JSP/JSF表达式语言EL

    在JSF框架中,EL与Faces Context紧密集成,可以方便地访问请求参数、会话属性、应用程序范围内的数据,甚至可以直接调用Managed Bean的方法。例如,如果你有一个Managed Bean叫做`UserBean`,它有一个返回用户信息的...

    JSF分页控件 ,支持大容量可查询分页

    2. **分页参数**:在HTTP请求中,需要传递分页参数,如当前页码和每页大小。这些参数可以通过URL查询字符串或隐藏表单字段传递。 3. **性能优化**:在数据库层面使用`LIMIT`和`OFFSET`(或等效的SQL语句)来只获取所...

    corejsf3代码

    - **FacesContext**:JSF应用中的上下文对象,它提供了对当前请求的访问,如获取请求参数、发送消息、导航等。 - **转换和验证**:JSF允许自定义数据转换和验证规则,确保用户输入符合业务逻辑要求。 - **Faces ...

    jsf 帮助文档 jar包

    在每个阶段,JSF都会执行特定的任务,如解析请求参数、验证输入数据、更新模型对象等。 **Facelets** 是JSF推荐的视图表示技术,它是一种XML-based的模板语言,用于创建JSF组件的视图。Facelets提供了模板继承、...

    JSF+faces+API帮助文档

    10. **Faces Servlet**:JSF框架的核心Servlet,负责处理所有JSF相关的HTTP请求,解析请求参数,调用适配器进行渲染。 总的来说,JSF+Faces+API帮助文档提供的是一份详尽的参考资料,涵盖了JSF框架的各个方面,包括...

    JSF如何使用ExternalContext类

    - `getRequest()`方法返回代表当前正在处理的HTTP请求的`ServletRequest`对象,包含了请求的所有信息,如请求参数、头信息等。 3. **获取ServletResponse对象**: - `getResponse()`方法返回当前正在构建的响应的...

Global site tag (gtag.js) - Google Analytics