1

我有一个由 Spring 管理的 JSF 支持 bean,但我希望能够使用 JSF 中的 @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;
    }
}

建议?

4

1 回答 1

2

其实很简单。我知道三种注射方法:

  1. 将 Spring 的@Value注解与隐式 El#{param}对象一起使用:

    @Value("#{param.bcIndex}")
    private int bcIndex;
    
  2. ExternalContext#getRequestParameterMap@PostConstruct/preRenderView监听器中使用:

    //@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>
    
于 2013-03-13T20:16:15.400 回答