JSF - устанавливает несколько значений @ManagedProperty в одном бине - PullRequest
4 голосов
/ 25 ноября 2010

Мне нужно установить 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 Ответ

10 голосов
/ 25 ноября 2010

Аннотации должны быть объявлены непосредственно перед классом, методом или областью интереса.

Итак:

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

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