JSF - 在单个bean中的@ManagedProperty上设置多个值

时间:2010-11-25 17:28:07

标签: jsf jsf-2 facelets javabeans

我需要在同一个bean上设置2个不同的ManagedProperty。所以我试过了:

@ManagedBean(name="selector")
@RequestScoped
public class Selector {
    @ManagedProperty(value="#{param.page}")
    @ManagedProperty(value="#{param.profile_page}")
    private String page;
    private String profile_page;

    public String getProfile_page() { 
        if(profile_page==null || profile_page.trim().isEmpty()) {
            this.profile_page="main";
        }
        return profile_page;
    }
    public void setProfile_page(String profile_page) { this.profile_page = profile_page; }

    public String getPage() {
        if(page==null || page.trim().isEmpty()) {
            this.page="homepage";
        }
        return page;
    }
    public void setPage(String page) { this.page=page; }
}

但不幸的是我无法写出2个不同的@ManagedProperty:它表示重复的注释。我该如何解决?

另一个:当我返回这个值时,它是一个字符串,我需要对抗。语法如下:

<h:panelGroup rendered="#{selector.profile_page.compareTo("main")}">
    <ui:include src="/profile/profile_main.xhtml" />
</h:panelGroup>

会起作用吗?

干杯

1 个答案:

答案 0 :(得分:10)

注释必须在感兴趣的类,方法或字段之前直接声明

所以:

@ManagedProperty(value="#{param.page}")
private String page;

@ManagedProperty(value="#{param.profile_page}")
private String profile_page;