In some cases, you may need to pass a new hidden value to a backing bean. Generally, there are two ways :

1. HTML Tag + getRequestParameterMap()

Render hidden field with plain HTML input, hard-coded new hidden value and access in backing bean via getRequestParameterMap() method.

JSF…

<h:form id="myForm">
    <input type="hidden" name="hidden1" value="this is hidden2" />
    <h:commandButton value="submit" action="#{user.action}" />
</h:form>

Managed bean…

@ManagedBean(name="user")
@SessionScoped
public class UserBean
{
	public String action(){
	   String value = FacesContext.getCurrentInstance().
		getExternalContext().getRequestParameterMap().get("hidden1");
	}
}

2. JSF Tag + JavaScript

Render hidden field via “h:inputHidden” tag, assign new value via 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>

Managed bean…

@ManagedBean(name="user")
@SessionScoped
public class UserBean
{
	public String hidden2;
 
	public void setHidden2(String hidden2) {
		this.hidden2 = hidden2;
	}
}

JSF 2.0 new hidden value example

A JSF 2.0 example, to demonstrate the use of above two methods to pass a new hidden value to a backing bean.

1. Managed Bean

A simple managed bean, assign name as “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. View Page

Two pages for demonstration.

demo.xhtml – two ways to pass a new hidden value.

<?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 – display hidden value via “h:outputText” tag.

<?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>

3. Demo

URL : http://localhost:8080/JavaServerFaces/

jsf2-new-hidden-example-1
jsf2-new-hidden-example-2

Download Source Code

Download It – JSF-2-New-HiddenValue-Example.zip (10KB)

Reference

  1. JSF <h:inputHidden /> JavaDoc
Tags :
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider making a donation to this charity, thanks.

Related Posts

Popular Posts