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]