您的位置:首页 > 产品设计 > UI/UE

How to pass new hidden value to backing bean in JSF

2016-10-31 15:32 1701 查看
https://www.mkyong.com/jsf2/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/





Download Source Code

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsf param hidden bean Java