在JSF中,“ f:param ”标记允许您将参数传递给组件,但是其行为因所连接的组件类型而异。 例如,
1. f:param + h:outputFormat
如果将“ f:param ”标签附加到“ h:outputFormat ”,则该参数指定占位符。
<h:outputFormat value="Hello,{0}. You are from {1}.">
<f:param value="JSF User" />
<f:param value="China" />
</h:outputFormat>
输出为–“ Hello JSF User。 你是中国人 。
2. f:param +其他组件
如果将“ f:param ”标签附加到其他组件(例如“ h:commandButton ”),则该参数将变为请求参数。
<h:commandButton id="submitButton"
value="Submit - US" action="#{user.outcome}">
<f:param name="country" value="China" />
</h:commandButton>
在用户bean中,您可以像这样返回参数值:
Map<String,String> params =
FacesContext.getExternalContext().getRequestParameterMap();
String countrry = params.get("country");
JSF f:param示例
这是一个JSF 2.0应用程序,用于展示f:param标记在“ h:commandButton ”和“ h:outputFormat ”组件中的使用。
1.托管豆
一个简单的托管bean。
UserBean.java
package com.mkyong;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
@ManagedBean(name="user")
@SessionScoped
public class UserBean{
public String name;
public String country;
public String outcome(){
FacesContext fc = FacesContext.getCurrentInstance();
this.country = getCountryParam(fc);
return "result";
}
//get value from "f:param"
public String getCountryParam(FacesContext fc){
Map<String,String> params = fc.getExternalContext().getRequestParameterMap();
return params.get("country");
}
//getter and setter methods
}
2. JSF页面
两个用于演示的JSF页面。
default.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>
<h1>JSF 2 param example</h1>
<h:form id="form">
Enter your name :
<h:inputText size="10" value="#{user.name}" />
<br /><br />
<h:commandButton id="submitButton"
value="Submit - US" action="#{user.outcome}">
<f:param name="country" value="United States" />
</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"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<h1>JSF 2 param example</h1>
<h2>
<h:outputFormat value="Hello,{0}. You are from {1}.">
<f:param value="#{user.name}" />
<f:param value="#{user.country}" />
</h:outputFormat>
</h2>
</h:body>
</html>
3.演示
输入您的姓名,例如“ mkyong”,然后单击按钮。
![jsf2-Param-Example-1 jsf2-Param-Example-1](https://www.mkyong.com/wp-content/uploads/2010/11/jsf2-Param-Example-1.png)
显示格式化消息,用户输入显示“名称”,按钮参数显示“国家”。
![jsf2-Param-Example-2 jsf2-Param-Example-2](https://www.mkyong.com/wp-content/uploads/2010/11/jsf2-Param-Example-2.png)
下载源代码
下载它– JSF-2-Param-Example.zip (10KB)
参考
标签: jsf2