JSF2.2入門 第14回パラメータ受け渡し


kanban14

katatsumuriパラメータ受け渡し その2

JSFのf:paramを使うとパラメータを受け渡すことができます。これはh:commandButtonタグやh:commandLinkタグの内側で使うことができます。

leaf渡す側のJSF

この例は、メートル単位で長さ数字を入力するinputTextをひとつ用意し、それを単位換算するためのボタンを2つ用意します。1つはインチ換算、もうひとつはフィート換算です。

それぞれのボタンの中にはf:pramタグが含まれていてinchボタンが押されたのか、feetボタンが押されたのかをパラメータで送るようにします。どちらのボタンが押されてもparam1Beanビーンのaction()メソッドが実行されます。

<h:form>
<h2>単位換算</h2>
長さ
<h:inputText value=”#{param1Bean.inputvalue}” styleClass=”in”/>メートル
<h:commandButton value=”inch” action=”#{param1Bean.action()}”>
<f:param name=”unit” value=”inch”/>
</h:commandButton>
<h:commandButton value=”feet” action=”#{param1Bean.action()}”>
<f:param name=”unit” value=”feet”/>
</h:commandButton>
</h:form>

leafマネージドビーン

param1Beanのaction()メソッドはどうなっているのでしょうか。赤い文字の部分でf:paramタグの値を読み取るようにしています。前の回でinitParamを扱ったときと同様にFacesContextを取得してgetRequestParameterMap()でリクエストパラメータを全部取得して、そこからunitという名前のパラメータを取り出します。

そのあと、それがinchかfeetなのかで換算する数値を変えています。換算後の結果はconvertedValueにセットするようにsetConvertedValue()メソッドをコールします。

public class Param1Bean {
double inputvalue;
double convertedValue;

public Param1Bean() {
}
public String action(){
FacesContext fc=FacesContext.getCurrentInstance();
Map<String,String> params=fc.getExternalContext().getRequestParameterMap();
String unit=params.get(“unit”);
if(unit.equals(“inch”)){
setConvertedValue(inputvalue*39.37d);
}else if(unit.equals(“feet”)){
setConvertedValue(inputvalue*3.2808d);
}
return “converted”;
}
・・・・・

leaf受け取る側のJSF

入力値、換算値、単位の3つを表示しています。最初の2つの値はマネージドビーンから取得していますが、3つ目の単位は暗黙オブジェクトのparamを使っています。paramの中のunitという名前のパラメータを取得します。

<h:body>
#{param1Bean.inputvalue}メートルは#{param1Bean.convertedValue}#{param.unit}です。
</h:body>

実行すると入力画面はこんな感じです。

param1

インチ換算だとつぎのようになります。

param2

フィート換算ボタンを押すと

param3

きちんと表示できます。

previousnext

JSF2.2のすべてをまとめたkindle電子書籍 「JavaServer Faces2.2 入門」もぜひご覧ください。パソコン、iPhone、Androidどんな端末用にもamazonが無料のKindle電子書籍リーダーを用意しています。それをつかってKindle本を手軽にお楽しみください。あなたが今お使いの端末用Kidle電子書籍リーダーのご案内

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA