【问题标题】:JSF - Set multiple values on @ManagedProperty in a single beanJSF - 在单个 bean 中的 @ManagedProperty 上设置多个值
【发布时间】:2011-05-15 20:10:20
【问题描述】:

我需要在同一个 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>

会有用吗?

干杯

【问题讨论】:

    标签: jsf jsf-2 facelets javabeans


    【解决方案1】:

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

    所以:

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

    【讨论】:

    • 完美!!!像往常一样+1 :) 关于相关问题?我可以使用那种语法吗?看起来什么都没有发生……
    • 请改用rendered="#{selector.profile_page == 'main'}"。有关 EL 中有效布尔表达式的其他示例,请查看 this answer
    猜你喜欢
    • 2014-08-23
    • 1970-01-01
    • 2015-05-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多