parameter in URL jsf2

前端 未结 2 688
醉梦人生
醉梦人生 2020-12-05 12:29

I need to have this link:

http://myserver:/myproject/innerpage/clip.jsf&id=9099

to extract the id from a code like this:

HttpServletReque         


        
相关标签:
2条回答
  • 2020-12-05 12:49

    You first have to show us how you are sending the parameter in your JSF, is it a commandButton/Link? An outputLink? A ? Also are you using redirect=true?

    Chances are you are losing the id somewhere during the request.

    0 讨论(0)
  • 2020-12-05 13:05

    The separator character between path and query string in URL is ?, not &. The & is separator character for multiple parameters in query string, e.g. name1=value1&name2=value2&name3=value3. If you omit the ?, then the query string will be seen as part of path in URL, which will lead to a HTTP 404 page/resource not found error as you encountered.

    So, this link should work http://myserver:port/myproject/innerpage/clip.jsf?id=9099


    That said, there's a much better way to access the request parameter. Set it as a managed property with a value of #{param.id}.

    public class Bean {
    
        @ManagedProperty(value="#{param.id}")
        private Long id;
    
        @PostConstruct
        public void init() {
            System.out.println(id); // 9099 as in your example.
        }
    
        // ...
    }
    

    The EL #{param.id} returns you the value of request.getParameter("id").

    A tip: whenever you need to haul the "raw" Servlet API from under the JSF hoods inside a managed bean, always ask yourself (or here at SO): "Isn't there a JSF-ish way?". Big chance you're unnecessarily overcomplicating things ;)

    0 讨论(0)
提交回复
热议问题