`

JSF的commandButton、commandLink、outputLink用法小结

    博客分类:
  • Jsf
阅读更多

comanndButton和commandLink:

h:commandButton
可以提交表单,但不能传递参数
h:commandLink
可以提交表单,又能传递参数,但是以链接的形式展现

commandLink必须要在一个from中。

comanndButton和commandLink要在一个from中才能提交表单内容。

会发送回本页面,并触发JSF的生命周期,比如:重建组件树、应用请求值等,因此,允许设置actionListener和action属性,这样他们可以很轻松完成强大的功能。

Java代码 复制代码
  1. <h:commandButton actionListener="#{actionListener.check}"; value="送出"; action="#{user.check}" />  
<h:commandButton actionListener="#{actionListener.check}"; value="送出"; action="#{user.check}" />



actionListener 响应的一个事件,当然这个和js中的事件不一样.actionListener="#{actionListener.check}"响应的是服务器端的事件actionListener类的check方法.

action 用过STRUTS的都知道,提交后执行的方法.当然在SRTUTS中action="URL",而这里是一个user类的check方法.

不足在于:如果重建组件树的成本比较高(比如:当前页面显示一个数据表格),而这些组件对于即将跳转到的页面没什么用时,就应该考虑使用outputLink了。

Java代码 复制代码
  1. <h:commandLink action="#{user.testLink}"><f:verbatim>增加</f:verbatim></h:commandLink>  
<h:commandLink action="#{user.testLink}"><f:verbatim>增加</f:verbatim></h:commandLink>



另外:如果需要传递参数<f:param.../>,使用commandLink
在action或actionListener中获取<f:param.../>:

Java代码 复制代码
  1. FacesContext ctx = FacesContext.getCurrentInstance();    
  2. int productId = Integer.parseInt((String)ctx.getExternalContext().getRequestParameterMap().get("productId"));   
FacesContext ctx = FacesContext.getCurrentInstance(); 
int productId = Integer.parseInt((String)ctx.getExternalContext().getRequestParameterMap().get("productId")); 



outputLink

比起前两个来说,他相当的轻量级了。他会直接产生一个<a href=""></a>链接,跳转到相应的页面,因此没有进入JSF生命周期的额外开销,跟我们直接写一个html的链接没什么区别。

如果需要传递参数,嵌入<f:param name="a" value="b"/>就可以了,当然这里的value可以用表达式来表示,比如value="#{param.productId}",用起来是相当方便的。

Java代码 复制代码
  1. <h:outputLink value="productEdit.faces">    
  2. <h:outputText value="编辑"/>    
  3. <f:param name="productId" value="#{item.productId}"/>    
  4. </h:outputLink>  
<h:outputLink value="productEdit.faces"> 
<h:outputText value="编辑"/> 
<f:param name="productId" value="#{item.productId}"/> 
</h:outputLink>



其效果为<a href="..jsf?productId=..."></a>

h:commandButton、h:commandLink 和h:outputLink的差别在于:h:outputLink没有进入JSF的生命周期,而h:commandLink和h:commandButton都要进入JSF的生命周期.

分享到:
评论

相关推荐

    JSF文件下载实现

    - **Backing Bean**:在后台Bean(如`ABean`)中定义一个方法调用`downloadFile`,然后在JSF界面使用`&lt;h:commandButton&gt;`或`&lt;h:commandLink&gt;`组件触发该方法。例如,`&lt;h:commandButton value="download" action="#{...

    jsf常用控件的使用

    本文将深入探讨JSF中的一些常见控件及其使用方法,旨在帮助开发者更好地理解和应用这些控件。 1. **输入控件**: - `h:inputText`:用于创建简单的文本输入字段,可以与Bean中的属性绑定,处理用户输入的数据。 -...

    jsf分页 jsf分页 jsf分页

    在JSF中,我们通常使用`h:commandLink`或`p:commandButton`来创建分页链接或按钮。例如,我们可以创建“上一页”、“下一页”以及页码链接。这些组件会触发一个后台动作事件,以便更新当前显示的数据页。 2. **...

    jsf第一个例子 jsf架包 jsf实例

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它为开发人员提供了一种模型-视图-控制器(MVC)架构,简化了前端和后端之间的交互。JSF提供了组件库,使得创建动态、交互式的...

    深入讨论JSF中Tree2组件使用方法

    深入讨论JSF中Tree2组件使用方法。

    ajax4jsf中文用户指南

    - `a4j:commandLink` 和 `a4j:commandButton`:替代JSF的`h:commandLink`和`h:commandButton`,支持Ajax操作。 - `a4j:outputPanel`:定义要更新的页面部分。 - `a4j:status`:显示Ajax请求的状态。 - `a4j:load...

    jsf快速入门教程

    页面中可以使用JSF组件,如`h:inputText`用于文本输入,`h:commandButton`用于提交表单。Managed Bean则负责处理用户的动作和保存数据。 **5. JSF组件** JSF提供了丰富的UI组件库,如按钮、输入框、表格、下拉菜单...

    JSF全套(JSF入门教+ LIB+ Ajax4JSF使用手册 )

    学习Ajax4JSF,你将掌握如何在JSF应用中集成Ajax,创建异步交互,以及使用其提供的各种Ajax组件,如`a4j:support`和`a4j:commandButton`。 5. **JSF项目的创建**:这部分教程会指导你从零开始创建一个完整的JSF项目...

    jsf

    3. **视图和导航**:讨论JSF如何处理页面间的导航,包括使用`&lt;h:commandLink&gt;`和`&lt;h:button&gt;`进行跳转。 4. **数据绑定**:讲解如何使用EL(Expression Language)将UI组件与JavaBeans属性绑定。 5. **事件和监听器*...

    ajax4jsf实例

    - **Ajax行为组件**:提供了一系列内置的行为组件,如`&lt;a4j:commandButton&gt;`、`&lt;a4j:commandLink&gt;`等,它们能够触发Ajax请求并更新指定的UI组件。 - **局部刷新**:Ajax4JSF支持对页面上的特定区域进行刷新,而不是...

    jsf facelet 的用法

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了前端和后端的交互,提供了组件化、事件驱动的开发模式。而**Facelet**是JSF的视图层技术,是JSF 1.2版本引入的一个重要...

    jsf实例jsf实例 JSF学习 JSF jar包 JSF

    jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF

    jsf标签使用文档

    本文档将详细介绍JSF中的一些核心标签及其使用方法。 #### 二、JSF页面配置与初始化 在使用JSF开发应用之前,通常需要在页面顶部声明JSF相关的标签库,以便在后续的代码中引用这些标签库中的组件。常见的JSF标签库...

    Ajax4jsf 用户手册

    - **a4j:commandLink** 和 **a4j:commandButton**:扩展JSF的`h:commandLink`和`h:commandButton`,提供Ajax支持。 - **a4j:outputPanel**:定义一个响应Ajax请求时更新的面板。 - **a4j:actionparam**:传递参数到...

    core jsf 1.2 jsf 核心

    **JSF 1.2核心详解** JavaServer Faces (JSF) 是Java平台上的一个用于构建用户界面的组件模型框架,特别适用于Web应用程序的开发。JSF 1.2是该框架的一个重要版本,它在JSF 1.1的基础上进行了一系列的改进和增强,...

    jsf常用标签整理

    总结,JSF中的常用标签包括&lt;h:commandLink&gt;、&lt;h:commandButton&gt;、、、、、、、、、&lt;h:outputLink&gt;和等。这些标签用于构建用户界面,与后台bean交互,并处理表单提交、验证和导航。理解和熟练使用这些标签是JSF开发的...

    jsf学生管理系统demo

    在faces-config.xml中定义导航规则,或使用JSF动作(如`h:commandLink`和`h:commandButton`的`action`属性)来指定用户操作后的页面跳转。数据转换则确保用户输入的数据类型与Bean中的属性类型匹配。 6. **国际化和...

    JSF Java Server Faces (JSF)框架

    JSF是一种用于构建Java ... 包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 Java Server Faces技术的重要开发框架 sun-ri、myfaces、icefaces、richfaces、seam

    JSF标签简体中文版

    - 示例:`&lt;h:outputLink value="../index.jsp"&gt;&lt;h:outputText value="Link to Index"/&gt;&lt;/h:outputLink&gt;` - 可以使用`&lt;f:param&gt;`添加URL参数。 - **outputFormat**:用于格式化输出文本。可以通过`&lt;f:param&gt;`来指定...

Global site tag (gtag.js) - Google Analytics