在某些情况下,您可能需要将新的隐藏值传递给支持bean。 通常,有两种方法:
1. HTML标记+ getRequestParameterMap()
呈现具有纯HTML输入,硬编码的新隐藏值的隐藏字段,并通过getRequestParameterMap()方法在后备bean中进行访问。
JSF…
<h:form id="myForm">
<input type="hidden" name="hidden1" value="this is hidden2" />
<h:commandButton value="submit" action="#{user.action}" />
</h:form>
托管豆…
@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>
托管豆…
@ManagedBean(name="user")
@SessionScoped
public class UserBean
{
public String hidden2;
public void setHidden2(String hidden2) {
this.hidden2 = hidden2;
}
}
JSF 2.0新的隐藏值示例
一个JSF 2.0示例,演示了如何使用上述两种方法将新的隐藏值传递给支持bean。
1.托管豆
一个简单的托管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.查看页面
两页用于演示。
demo.xhtml –传递新隐藏值的两种方法。
<?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>
3.演示
网址:http:// localhost:8080 / JavaServerFaces /
下载源代码
下载它– JSF-2-New-HiddenValue-Example.zip (10KB)
参考
翻译自: https://mkyong.com/jsf2/how-to-pass-new-hidden-value-to-backing-bean-in-jsf/