UIForm with prependId=“false” breaks

后端 未结 1 713
抹茶落季
抹茶落季 2020-11-22 02:00

I have a question about the idea behind the fact, that only UIForm got the attribute prependId. Why is the attribute not specified in the Nam

1条回答
  •  孤街浪徒
    2020-11-22 02:39

    Indeed, UIComponent#findComponent() as done by fails when using . This problem is known and is a "Won't fix": JSF spec issue 573.

    In my humble opinion, they should never have added the prependId attribute to the UIForm during the JSF 1.2 ages. It was merely done to keep j_security_check users happy who would like to use a JSF form with JSF input components for that (j_security_check requires exact input field names j_username and j_password which couldn't be modified by configuration). But they didn't exactly realize that during JSF 1.2 another improvement was introduced which enables you to just keep using

    for that instead of sticking to . And then CSS/jQuery purists start abusing prependId="false" to avoid escaping the separator character : in their poorly chosen CSS selectors.

    Just don't use prependId="false", ever.

    For j_security_check, just use or the new Servlet 3.0 HttpServletRequest#login(). See also Performing user authentication in Java EE / JSF using j_security_check.

    For CSS selectors, in case you absolutely need an ID selector (and thus not a more reusable class selector), simply wrap the component of interest in a plain HTML

    or .

    See also:

    • How to select JSF components using jQuery?
    • How to use JSF generated HTML element ID with colon ":" in CSS selectors?
    • By default, JSF generates unusable ids, which are incompatible with css part of web standards

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