【发布时间】:2010-09-30 04:18:22
【问题描述】:
我有一个 JSF 页面,其中有一个 h:inputHidden 组件,我正在设置一个硬编码值。我已经设置了id、name 和value 属性。但是当我从托管 bean 访问值时,我得到了null。
我还注意到,在运行时,名称会更改为某个自动生成的 id。
感谢任何帮助。
【问题讨论】:
标签: jsf
我有一个 JSF 页面,其中有一个 h:inputHidden 组件,我正在设置一个硬编码值。我已经设置了id、name 和value 属性。但是当我从托管 bean 访问值时,我得到了null。
我还注意到,在运行时,名称会更改为某个自动生成的 id。
感谢任何帮助。
【问题讨论】:
标签: jsf
<h:inputHidden> 的行为与 <h:inputText> 组件的行为相同,例如:
<h:inputHidden id="myHiddenField" value="#{myBean.myValue}"/>
将引用 bean myBean 的属性 myValue。因此,您必须在此 bean 中同时提供 getMyValue() 和 setMyValue(String)。
因此,如果您在客户端更改此隐藏字段的值(使用 Javascript),那么一旦提交表单,新值将在 bean 端更新。
关于ID,你必须指定id属性,否则JSF会为你生成一个(例如j_id123)。如果您为此属性指定一个值,则 HTML 标记的 ID 将是您指定的 ID,并以您的表单 ID 为前缀。所以在下面的例子中:
<h:form id="myForm">
<h:inputHidden id="myField" .../>
HTML <input> 标记将具有 id myForm:myField(注意 : 用作 id 的分隔符)。
【讨论】:
你可以用这个:
@ManagedBean(name="myBean")
@SessionScoped
public class MyBean implements Serializable {
String myValue= "I'm Hidden value!";
public String getMyValue() {
return myValue;
}
public void setMyValue(String myValue) {
this.myValue = myValue;
}
}
【讨论】: