Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 如何在UI和Java类之间共享同一个会话对象?_Jsf - Fatal编程技术网

Jsf 如何在UI和Java类之间共享同一个会话对象?

Jsf 如何在UI和Java类之间共享同一个会话对象?,jsf,Jsf,在JSF中,我们在Faces-config.xml中将许多managebean定义为会话范围。我想知道我们能否在UI和Java类之间共享相同的会话对象? 例如: <managed-bean> <managed-bean-name>abcBean</managed-bean-name> <managed-bean-class>com.abc.com.ui.manage.AbcBean</managed-bean-class>

在JSF中,我们在Faces-config.xml中将许多managebean定义为会话范围。我想知道我们能否在UI和Java类之间共享相同的会话对象? 例如:

<managed-bean>
    <managed-bean-name>abcBean</managed-bean-name>
    <managed-bean-class>com.abc.com.ui.manage.AbcBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

abcBean
com.abc.com.ui.manage.AbcBean
一场
我可以在Java类中获取abcBean吗,比如通过FacesContext


请告知。

如果我误解了你的意思,那么对不起

您可以通过以下方式获得任何ManagedBean(注入):

:(来自/在任何Java类中)

@SuppressWarnings(“未选中”)
公共静态T findBean(字符串beanName){
FacesContext context=FacesContext.getCurrentInstance();
if(上下文==null)
返回null;
其他的
return(T)context.getApplication().evaluateExpressionGet(context,“#{”+beanName+“}”,Object.class);
}

会话范围的JSF托管bean存储为HTTP会话属性。因此,您还可以从HTTP会话中获取会话范围的JSF托管bean,这是从HTTP会话中获取会话属性的常用方法——使用bean名称作为键,但需求并不十分明确,特别是在“UI和Java类”方面。
@ManagedBean
@SessionScoped
public class AnotherBean implements Serializable {

    @ManagedProperty(value="#{myBean}")
    private MyBean myBean;
    ....
    ....
    // you have to implement the this setter!!!!!
    public void setMyBean(MyBean myBean) {
        this.myBean = myeBean;
    }
}
    @SuppressWarnings("unchecked")
    public static <T> T findBean(String beanName) {
        FacesContext context = FacesContext.getCurrentInstance();
        if(context == null)
            return null;
        else
            return (T) context.getApplication().evaluateExpressionGet(context, "#{" + beanName + "}", Object.class);
    }