How to pass new hidden value to backing bean in JSF

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

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

avatar
12 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
11 Comment authors
wondyfrawSergio EnriquezmarioGanteppaJohn M Recent comment authors
newest oldest most voted
wondyfraw
Guest
wondyfraw

Thanks a lot man, you save time

trackback
JSF 2 hidden value example

[…] Download Source Code Download It – JSF-2-HiddenValue-Example.zip (9KB) Note You may interest to know how to pass new hidden value to backing bean in JSF. […]

Mortros
Guest
Mortros

Thanks, I could not find how to do that, I’m a noob with JSF xD

sdds
Guest
sdds

what library stands “h” for? (in <h:inputHidden)

mad_tortle
Guest
mad_tortle

thank you very much, I’ve been looking for this for days
🙂

A.C
Guest
A.C

If I have input text and submit button in different forms, in that case in the actionlistener of the button the backing bean value of the input text is coming as null.Please help me how to overcome this problem

Sai
Guest
Sai

Thanks a lot !! was stuck with the problem for couple of days and finally was able to get it !!

Jayul
Guest
Jayul

Thanks for this Example.But i still not get value in JSF bean

Here is my Code….

MyBean.java

public void clickMethod(){
JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), “getScreenSize();”);
String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(“heightid”);
System.out.println(“Hello !! “+value);
}

View.jspx

function getScreenSize(){
alert(“Call”);
var screenWidth = screen.width;
var screenHeight = screen.height;
alert(screenHeight);
alert(screenWidth);
document.getElementById(“heightid”).value = screenWidth;
document.getElementById(“widthid”).value = screenHeight;
}

Please help me out….

Jayul
Guest
Jayul

Thanks for this Example.But i still not get value in JSF bean

Here is my Code….

JavaScript Function…

function getScreenSize(){
alert(“Call”);
var screenWidth = screen.width;
var screenHeight = screen.height;
alert(screenHeight);
alert(screenWidth);
document.getElementById(“heightid”).value = screenWidth;
document.getElementById(“widthid”).value = screenHeight;
}

icefaces Components…

MyBean.java

public void clickMethod(){
JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(),”getScreenSize();”);
String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(“heightid”);
System.out.println(“Hello !! “+value);
}

Please help me out….

Ganteppa
Guest
Ganteppa

Thanks a lot.

mario
Guest
mario

Thanks a lot.

Sergio Enriquez
Guest
Sergio Enriquez

Hey how can i do this with Prime faces tables wich would be the format??