繁体   English   中英

从ManagedBean传递参数到jsf页面

[英]Pass a param from ManagedBean to jsf page

我正在使用JSF 2.2和Tomcat 8,现在才开始使用它们。

我在jsf页面中有一个命令按钮。

<h:commandButton id="newObject" value="New Object" action="#{someObject.someAction}">
<f:param name="object_id" value="#{someObject.object_id}" />
</h:commandButton>

ManagedBean与此类似:

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
@ManagedBean
public class SomeObject implements Serializable{
    private static final long serialVersionUID = 1L;
    private int object_id;
    public int getObject_id() {
        return object_id;
    }
    public void setObject_id(int object_id) {
        this.object_id = object_id;
    }
    public String someAction() {
        setObject_id(sqlInsert());
        if(getObject_id() != 0) {
            System.out.println(getObject_id());
            return "new_page";
        }
    }
}

sqlInsert方法工作正常。 我用它在某些sql表中插入新行并获取自动生成的键,它是一个int。 如果未发生插入,则将返回0。

我可以导航到new_page,但是参数object_id为0。我添加了println以显示object_id,它是实际的键。

我究竟做错了什么?

由于您在受管Bean上仅使用@ManagedBean批注,并且未明确指定Bean的任何作用域,因此您的Bean就像其@RequestScoped Bean一样起作用。[查看链接]

因此,每次单击“ New Object按钮时,都会重新初始化Bean,并且会丢失状态(变量值)。

考虑并决定您要使用的范围[查看链接] 根据您的要求, @ViewScoped可以为您完成这项工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM