簡體   English   中英

如何訪問ejb中的托管bean屬性?

[英]How could I access managed bean properties inside an ejb?

可從ejb訪問托管bean屬性嗎? 我想從托管bean中獲取一些值到我的ejb中。 托管Bean屬性由jsf創建,效果很好,但是在我的ejb中,托管Bean屬性始終為null。

這是我的部分代碼:

托管Bean: BeanCredentials

@ManagedBean
@RequestScoped
public class BeanCredentials implements Serializable {
    private String eMail;

    public String geteMail() {
        return eMail;
    }

    public void seteMail(String eMail) {
        this.eMail = eMail;
    }    
}

EJB: ServiceUser

@Stateful
public class ServiceUser {
    @PersistenceContext(unitName = "...")
    private EntityManager em;

    @Inject
    private BeanCredentials credentials;

    ...

    @Transactional
    public void login() {       
        if(this.credentials.geteMail() == null) { /* Always true */
            System.out.println(true);
        }
    }
}

public void login(); 從另一個向前端提供用戶服務(即登錄,注銷,創建新用戶,顯示用戶信息)的托管bean中調用。 此托管bean委托ejb( ServiceUser )處理所有必要的用戶任務

托管Bean: BeanUser

@ManagedBean
@SessionScoped 
public class BeanUser implements Serializable {
    @EJB
    private ServiceUser serviceUser;

    ...

    public void login() {       
        this.serviceUser.login();
    }
}

在jsf中,值BeanCredentials eMail已填充,但我無法在ejb ServiceUser該值。 我會誤解一些注釋或概念嗎?

如何訪問ejb中的托管bean屬性? 常見的解決方案是什么?

您可以將值作為參數傳遞給任何EJB方法。

例如,在典型的創建表單中,您使用ManagedBean字段捕獲了來自用戶的所有輸入,然后通過具有這些值的服務調用EJB。 如果屬性數量很大,則可以使用Java傳輸對象。

您可以確保javax.inject jar存在於您的類路徑中。 如果您正在使用此行家,請嘗試包括

<dependency>
  <groupId>javax.inject</groupId>
  <artifactId>javax.inject</artifactId>
  <version>1</version>
</dependency>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM