Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does JSF generate names in addition to IDs?

Tags:

jsf-2

The generation / use of IDs is fairly clear, for reassociating submitted components to the view tree.

But why does JSF generate names as well? Does it use them internally?

like image 957
Evan Knowles Avatar asked Nov 29 '25 14:11

Evan Knowles


1 Answers

It's required by HTML specification and used by Servlet API. Webbrowsers use input field names as HTTP request parameter names. They do not use input field IDs for that as it would otherwise be impossible to send multiple values per name (select multiple, checkbox groups, etc).

I.e.

<h:inputText id="foo">

generates

<input type="text" id="formId:foo" name="formId:foo" />

which gets in client side prepared (by webbrowser's internal code) in HTTP request as

element.getAttribute("name") + "=" + element.getAttribute("value")

and gets in server side extracted (by UIComponent#decode()) from the HTTP request as

String foo = request.getParameter(component.getClientId());

See also:

  • Difference between id and name attributes in HTML
  • How to transfer data from JSP to servlet when submitting HTML form
  • ServletRequest.getParameterMap() returns Map<String, String[]> and ServletRequest.getParameter() returns String?
like image 125
BalusC Avatar answered Dec 01 '25 20:12

BalusC