生成/使用ID非常明确,用于将提交的组件重新关联到视图树。
但为什么JSF也会生成名字?它是在内部使用它们吗?
答案 0 :(得分:3)
HTML规范是required,Servlet API是used。 Web浏览器使用输入字段名称作为HTTP请求参数名称。它们不使用输入字段ID,因为否则无法为每个名称发送多个值(选择多个,复选框组等)。
即
<h:inputText id="foo">
产生
<input type="text" id="formId:foo" name="formId:foo" />
在HTTP请求中作为客户端(通过webbrowser的内部代码)准备好
element.getAttribute("name") + "=" + element.getAttribute("value")
并从HTTP请求中获取服务器端(由UIComponent#decode()
提取)
String foo = request.getParameter(component.getClientId());