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その他のコンポーネント



h:commandButton

“のような他のコンポーネントに ”

f:param

“タグを付けると、パラメータは要求パラメータに変わります。

<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アプリケーションは、「

h:commandButton

」と「

h:outputFormat

」の両方のコンポーネントで

f:param

タグの使用方法を示しています。

1.マネージドBean

単純なマネージド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ページ

デモンストレーションのための2つの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>

デモ

あなたの名前、例えば「mkyong」を入力し、ボタンをクリックしてください。


jsf2-Param-Example-1、title = "jsf2-Param-Example-1"、width = 640、height = 403

フォーマットされたメッセージ、ユーザ入力からの “名前”、ボタンパラメータからの “国”を表示します。


jsf2-Param-Example-2、title = "jsf2-Param-Example-2"、width = 640、height = 403

ソースコードをダウンロードする

ダウンロード – リンク://wp-content/uploads/2010/11/JSF-2-Param-Example.zip[JSF-2-Param-Example.zip](10KB)

リファレンス

f:param JavaDoc]

リンク://タグ/jsf2/[jsf2]