JSFのバッキングBeanに新しい隠し値を渡す方法
場合によっては、新しい隠し値をバッキングBeanに渡す必要があるかもしれません。一般に、2つの方法があります。
1. HTMLタグgetRequestParameterMap()
JSF …
<h:form id="myForm"> <input type="hidden" name="hidden1" value="this is hidden2"/> <h:commandButton value="submit" action="#{user.action}"/> </h:form>
マネージドBean …
@ManagedBean(name="user") @SessionScoped public class UserBean { public String action(){ String value = FacesContext.getCurrentInstance(). getExternalContext().getRequestParameterMap().get("hidden1"); } }
2. JSFタグJavaScript
“h:inputHidden”タグで隠しフィールドをレンダリングし、JavaScriptで新しい値を割り当てます。
JSF …
<script type="text/javascript"> function setHiddenValue(new__value){ document.getElementById('myForm:hidden2').value = new__value; } </script> <h:form id="myForm"> <h:inputHidden id="hidden2" value="#{user.hidden2}"/> <h:commandButton value="submit" action="..." onclick="setHiddenValue('this is hidden2');"/> </h:form>
マネージドBean …
@ManagedBean(name="user") @SessionScoped public class UserBean { public String hidden2; public void setHidden2(String hidden2) { this.hidden2 = hidden2; } }
JSF 2.0の新しい隠し値の例
バッキングBeanに新しい隠し値を渡すための上記2つのメソッドの使用方法を示すJSF 2.0の例。
1.マネージドBean
単純なマネージドBeanでは、名前を「user」として割り当てます。
package com.mkyong.form; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import java.io.Serializable; @ManagedBean(name="user") @SessionScoped public class UserBean implements Serializable { public String hidden1; public String hidden2; public String getHidden2() { return hidden2; } public void setHidden2(String hidden2) { this.hidden2 = hidden2; } public String getHidden1() { return hidden1; } public void setHidden1(String hidden1) { this.hidden1 = hidden1; } public String action(){ String value = FacesContext.getCurrentInstance(). getExternalContext().getRequestParameterMap().get("hidden1"); setHidden1(value); return "start"; } }
2.ページを見る
デモンストレーションのための2ページ。
-
demo.xhtml ** – 新しい隠し値を渡す2つの方法。
<?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:head> <script type="text/javascript"> function setHiddenValue(new__value){ document.getElementById('myForm:hidden2').value = new__value; } </script> </h:head> <h:body> <h1>JSF 2 pass new hidden value to backing bean</h1> <h:form id="myForm"> <input type="hidden" name="hidden1" value="this is hidden2"/> <h:inputHidden id="hidden2" value="#{user.hidden2}"/> <h:commandButton value="submit" action="#{user.action}" onclick="setHiddenValue('this is hidden2');"/> </h:form> </h:body> </html>
-
start.xhtml ** – “h:outputText”タグで隠し値を表示します。
<?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> <h1>JSF 2 pass new hidden value to backing bean</h1> <ol> <li>Hidden1 = <h:outputText value="#{user.hidden1}"/></li> <li>Hidden2 = <h:outputText value="#{user.hidden2}"/></li> </ol> </h:body> </html>
デモ
URL:http://localhost:8080/JavaServerFaces/
ソースコードをダウンロードする
ダウンロード – リンク://wp-content/uploads/2010/09/JSF-2-New-HiddenValue-Example.zip[JSF-2-New-HiddenValue-Example.zip](10KB)
リファレンス
<h:inputHidden/> JavaDoc]