2015-05-02 28 views
-1

在JSF中,我们在Faces-config.xml中定义了很多managebean作为会话范围。我想知道我们可以在UI和Java类中共享相同的会话对象吗? 例子:如何在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的Java类,如通过FacesContext的?

请指教。

+0

会话范围JSF管理bean被存储为HTTP会话属性。因此,您还可以从HTTP会话获取会话范围的JSF托管bean,这是您从HTTP会话获取会话属性的常用方式 - 使用该bean名称作为密钥,但是要求并不十分明确,尤其是“* UI和Java类*“。 – Tiny

回答

0

如果我误解你,那么对不起。

您可以得到任何ManagedBean这种方式(注):

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

OR:(从/在任何Java类)

@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); 
    } 
相关问题