传递托管bean中的表单值

时间:2014-07-08 17:01:01

标签: java jsf managed-bean

我想将我的表单值传递给我的托管bean以便处理它,但是当我尝试在我的操作方法中检索值时,我总是得到一个空值

我的豆子

@ManagedBean(name="datas")
@SessionScoped

public class Datas implements Serializable {

    private static final long serialVersionUID = 1L;
    private String ID_primary;

    public Datas(){

    }

    public Datas (String ID_primary){   
        this.ID_primary=ID_primary;
    }
    public String getID_primary() {
        return ID_primary;
    }
    public void setID_primary(String ID_primary) {
        this.ID_primary= ID_primary;
    }

    public void process() {

        Map<String, String> request=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

        String value = request.get("ID_primary"); // always return null
        System.out.println("ID" + value);

    }
}

我的表格

<h:form>
    <div align="left">                      
            <h:inputText id="ID_primary" name="ID_primary" value="#{datas.ID_primary}" />                           
    </div>
    ..........


    <div align="right">

                <h:commandButton action="#{datas.process()}" value="Create" type="submit" />
  </div>
</h:form>

非常感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您有两个不同的form元素,当您点击底部commandButton中的form时,顶部form中的值不会随请求一起发送。

您可以在div内添加form这样的标记,这样您就可以在form内加div来制作@ManagedProperty,如果这是您分裂的原因它们。

同时将ID_primary注释添加到public class Datas implements Serializable { private static final long serialVersionUID = 1L; @ManagedProperty(value = "#{Datas.ID_primary}") private String ID_primary; [..] 字段:

ManagedBean

编辑:

好的,我的不好,我没仔细看过代码。在带有ManagedProperty的{​​{1}}中,此属性将由JSF自动设置,因此您可以这样阅读:

public void process() {
        System.out.println("ID" + getID_primary());
}