Ошибка при использовании JSF @ManagedProperty()?

У меня проблемы с использованием @ManagedProperty. Как только я назначаю его свойству, я получаю сообщение об ошибке ниже. По-видимому, параметр понимается как null, но это не нужный случай. Почему @ManagedProperty(value = "#{param.menu}") возвращает null?

Строка, которую я набираю:

.../spectrum/index.jsf?lang=en&menu=impressum

Код у меня есть:

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

public String getMenu() {
    return menu;
}

public void setMenu(String menu) {
    this.menu = menu;
}

Ошибка, которую я получаю:

Error processing request
Context Path:
/spectrum

Servlet Path:
/index.jsf

Path Info:
null

Query String:
lang=en&menu=impressum

Stack Trace
javax.servlet.ServletException: Verwalteter Bean topMenuBean kann nicht erstellt werden. Die folgenden Probleme wurden gefunden: - Der Bereich des Objekts, auf das Ausdruck #{param.menu}, request, ist kürzer als der verweisende Bereich session des verweisenden Beans topMenuBean.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240)
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73)
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146)
io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)

РЕДАКТИРОВАТЬ:

Ошибка лежит в @SessionScoped. Чтобы он работал, он должен быть @RequestScoped! Спасибо @Tiny! Большое спасибо, ребята! :)


person Socrates    schedule 09.12.2014    source источник
comment
Основное сообщение об исключении локализовано. Что такое перевод? #{param} требуется управляемый компонент с областью запроса. Является ли этот запрос bean-компонента ограниченным?   -  person Tiny    schedule 09.12.2014
comment
Google Translate: Управляемый компонент topMenuBean создать невозможно. Были обнаружены следующие проблемы: - Область объекта для выражения #{} param.menu, запрос, короче, чем ссылочное поле сеанса ссылочного Bean-компонента topMenuBean. не требует пояснений. topMenuBean — это bean-компонент с областью действия сеанса, в котором #{param.menu} не привязан. Он ожидает bean-компонент с областью действия запроса.   -  person Tiny    schedule 09.12.2014
comment
Альтернатива.   -  person Tiny    schedule 09.12.2014
comment
Вау! :) Это было просто! Спасибо! Я быстро обновлю свой пост! +++ для вас!   -  person Socrates    schedule 09.12.2014
comment
Измените среду на английский. Шансы на успешное обращение Google к сообщению об ошибке возрастут в геометрической прогрессии.   -  person BalusC    schedule 09.12.2014


Ответы (1)


Ошибка заключается в @SessionScoped. Чтобы он работал, он должен быть @RequestScoped! Спасибо @Tiny! Большое спасибо, ребята! :)

person Socrates    schedule 21.04.2018