JSF里通过commandButton来传参的一种方法(转)
假设我的JSF应用中有一个列表,列表的每一行有一个超链接用以处理该行的记录(比如删除该行),如图1所示
图1
上图倒数的第二第三列就是commandlink的实现
如果使用commandLink来传递参数给backingbean的话很方便(这种例子随处可见),就像代码1使用f:param 标签传递每一行的id号一样
代码1
<h:commandLink value="Done" action="#{taskejb.Done}">
<f:param name="TasktodoParam" value="#{item.todoid}"/>
</h:commandLink>
然后backbean的Done方法可以用代码2取得参数
代码2
String id =
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(TasktodoParam);
新的需求是把commandLink 换成是commandButton ,就像图1最后的一列。
如果我们简单的把代码1的commandLink 替换成 commandButton,然后用代码2来取参数的话取到的值会是null,随后可能会抛出nullpointexception。
所以采用下面的办法,在commandButton上加一个actionListener,像代码3这样
代码3
<h:commandButton value="Done" action="#{taskejb.Done}"
actionListener="#{taskejb.testListener}">
<f:attribute name="myAttribute" value="#{item.todoid}" />
</h:commandButton>
backbean的testListener方法用以下方法取得参数
代码4
public void testListener(ActionEvent e) {
if (e.getComponent().getAttributes().get("myAttribute") != null) {
tempParam = e.getComponent().getAttributes().get("myAttribute").toString();
}
}
其中String型的全局变量tempParam用以接受传入的参数,实际执行时testListener方法会先于Done方法执行,所以在Done方法中可以使用传入的参数。
另一种方法仍然使用f:param传参,像代码5,6
代码5
<h:commandButton value="Hello" actionListener="#{myBean.myMethod}">
<f:param name="myParam" value="hello" />
</h:commandButton>
代码6
public void myMethod( ActionEvent e ) {
String myParam = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get( "myParam" ).toString();
}
分享到:
相关推荐
JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...
一种新的基于JSF技术的Web用户界面开发方法
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者必备,jsf架包 jsf实例
《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF...
JSF中文教程JSF中文教程JSF中文教程JSF中文教程
================================= JSF开发必备JAR ================================= <br>《JSF入门简单中文版》开篇提到JSF开发需要的jar,' 但是按其中提供的方法: <br>jstl.jar 与 ...
主要讲述JSF的工作方式 JSF的工作方式 JSF架构 JSF模型 JSF事件类型
JSF第一步 pdf格式
JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍JSF开发介绍
自己写的JSF文件上传项目,可以最大支持最大1.99G文件 需要的jar包需奥自己加 附:jar目录截图
jsf1.2 core jsf jsf核心
JSF的学习入门知识教程,里面有例子还有各个标签的使用及属性介绍
jsf 视频 java faces jsf 视频 java faces jsf 视频 java faces
它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。由于由Java Community Process (JCP) 推动,属于Java EE 5中的技术规范,而受到了厂商的广泛支持。 JSF(Java Server ...
JSF入门教程 JSF入门教程 JSF入门教程
jsf 中文文档jsf 中文文档jsf 中文文档jsf 中文文档
《jsf第一步》第13章,源码。
JSF为JAVA的 Web应用用户界面的开发人员提供了标准的编程接口、丰富可扩展的UI组件库(一个核心的JSP标记库用来处理事件、执行验证以及其他非UI相关的操作和一个标准的HTML 标记库来表示 UI组件)、事件驱动模型等...