如何从托管bean中的h:inputHidden读取值

时间:2010-09-30 04:18:22

标签: jsf

我有一个JSF页面,其中有一个h:inputHidden组件,我正在设置一个硬编码值。我设置了idnamevalue属性。但是当我从托管bean访问值时,我得到null

我还注意到,在运行时,名称正在变为某个自动生成的id。

感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

<h:inputHidden>的行为与<h:inputText>组件的行为相同,例如:

<h:inputHidden id="myHiddenField" value="#{myBean.myValue}"/>

将引用bean myValue的属性myBean。因此,您必须在此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的分隔符。)

答案 1 :(得分:0)

您可以使用:

@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;
    }   

}