可以使用<h:attribute>
标签通过动作侦听器将属性值传递给组件,或将参数传递给组件。
以下代码显示如何使用<h:attribute>
标签。
<h:commandButton id="submit" actionListener="#{userData.attributeListener}" action="result"> <f:attribute name="value" value="Show Message" /> <f:attribute name="username" value="JSF 2.0 User" /> </h:commandButton>
以下是文件:UserBean.java 中的代码。
package com.zyiz.netmon; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.event.ActionEvent; @ManagedBean(name="user") @SessionScoped public class UserBean{ public String nickname; public void attrListener(ActionEvent event){ nickname = (String)event.getComponent().getAttributes().get("username"); } public String outcome(){ return "result"; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } }
以下是文件:index.xhtml 中的代码 -
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <h:body> <h:form id="form"> <h:commandButton action="#{user.outcome}" actionListener="#{user.attrListener}"> <f:attribute name="username" value="zyiz.net" /> <f:attribute name="value" value="Click Me" /> </h:commandButton> </h:form> </h:body> </html>
以下是文件:result.xhtml 中的代码 -
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <h:body> #{user.nickname} </h:body> </html>
打开 NetBeans 创建一个名称为: Attribute 的Web工程,并使用上面文件代码。运行项目,打开浏览器访问以下网址:
http://localhost:8084/Attribute
如果没有错误,应该会看到以下结果 -