2013-03-13 75 views
1

我有一個Spring管理的JSF支持bean,但我希望能夠使用JSF中的@ManagedProperty。以下不起作用:在Spring管理支持bean中使用JSF2 @ManagedProperty

@Component 
@Scope(Scopes.REQUEST) 
public class MyRequestBean { 

    @ManagedProperty(value="#{param.bcIndex}") 
    private int bcIndex; 

    public int getBcIndex() { 
     return bcIndex; 
    } 

    public void setBcIndex(int bcIndex) { 
     this.bcIndex = bcIndex; 
    } 
} 

建議?

+0

我認爲這是足夠使用JSF的'@ RequestScoped'註解。 Spring上下文爲每個HTTP請求返回一個bean實例,JSF也一樣,爲什麼要混合這兩個概念? – 2013-03-13 19:36:15

+0

[看起來不可能用香草泉/ jsf](http://forum.springsource.org/showthread.php?41321-JSF-injecting-JSF-managed-into-SPRING-managed-bean) – kolossus 2013-03-13 19:42:19

+0

@ kolossus您提供的鏈接看起來有點過時。 – 2013-03-13 21:05:27

回答

2

其實它很簡單。我知道的三種方法做你的注入:

  1. 使用Spring的@Value註解連同隱薩爾瓦多#{param}對象:在@PostConstruct/preRenderView聽衆

    @Value("#{param.bcIndex}") 
    private int bcIndex; 
    
  2. 利用ExternalContext#getRequestParameterMap

    //@PostConstruct 
    public void init() { 
        bcIndex = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("bcIndex"); 
    } 
    
  3. 在您的視圖中進行約束利用<f:viewParam>

    <f:metadata> 
        <f:viewParam name="index" value="#{myRequestBean.bcIndex}" /> 
    </f:metadata> 
    
相關問題