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 viagetRequestParameterMap() 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
Download It – JSF-2-New-HiddenValue-Example.zip (10KB)
Reference
http://www.mkyong.com/jsf2/how-to-pass-new-hidden-value-to-backing-bean-in-jsf/
标签:JSF,String,backing,value,bean,new,hidden,public From: https://blog.51cto.com/u_16200746/6803335