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

4

我需要在同一个bean上设置两个不同的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; }
}

不幸的是,我不能编写两个不同的@ManagedProperty:它会显示重复注释。我该怎么办?

另外一个问题是,当我返回这个值时,它是一个字符串,而我需要进行对比。可以使用以下语法:

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

能够工作吗?

谢谢

1个回答

10

注释必须直接在所需类、方法或字段之前声明。

因此:

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

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

完美!!!像往常一样加1 :) 关于相关问题?我可以使用那个语法吗?看起来好像没什么发生... - markzzz
4
请使用 rendered="#{selector.profile_page == 'main'}"。查看此答案以获取其他有效的EL布尔表达式示例。 - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接