0

I am having trouble using @ManagedProperty. As soon as I assign it to a property I get the error below. Apparently the parameter is understood as null, but this is not the wanted case. Why is @ManagedProperty(value = "#{param.menu}") returning null?

The line I type:

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

The code I have:

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

public String getMenu() {
    return menu;
}

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

The error I get:

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)

EDIT:

The error lays in @SessionScoped. It has to be @RequestScoped to make it work! Thanks @Tiny! Thanks a lot guys! :)

Tiny
  • 27,221
  • 105
  • 339
  • 599
Socrates
  • 8,724
  • 25
  • 66
  • 113
  • 1
    The main exception message is localized. What is the translation? `#{param}` requires a request scoped managed bean. Is that bean request scoped? – Tiny Dec 09 '14 at 15:23
  • 2
    Google Translate : "*Managed Bean `topMenuBean` can not be created. The following problems were found: - **The area of the object to the expression `#{}` `param.menu`, request, is shorter than the referencing field session of the referring Beans `topMenuBean`**.*" is self-explanatory. `topMenuBean` is a session scoped bean in which `#{param.menu}` is not bound. It expects a request scoped bean. – Tiny Dec 09 '14 at 15:28
  • 1
    [Alternative](http://stackoverflow.com/a/6137638/1391249). – Tiny Dec 09 '14 at 15:41
  • Wow! :) That was easy! Thank you! I will quickly update my posting! +++ for you! – Socrates Dec 09 '14 at 15:54
  • 1
    Change your environment to English. The chances on a successful Google hit on the error message will exponentially increase. – BalusC Dec 09 '14 at 17:35

1 Answers1

0

The error lays in @SessionScoped. It has to be @RequestScoped to make it work! Thanks @Tiny! Thanks a lot guys! :)

Socrates
  • 8,724
  • 25
  • 66
  • 113