protected void encodeHtmlFormBegin(FacesContext context, HtmlForm htmlForm)
throws IOException {
final ResponseWriter writer = context.getResponseWriter();
writer.startElement(JsfConstants.FORM_ELEM, htmlForm);
RendererUtil.renderIdAttributeIfNecessary(writer, htmlForm,
getIdForRender(context, htmlForm));
RendererUtil.renderAttribute(writer, JsfConstants.NAME_ATTR, htmlForm
.getClientId(context));
RendererUtil.renderAttribute(writer, JsfConstants.METHOD_ATTR,
JsfConstants.POST_VALUE);
renderRemainAttributes(htmlForm, writer, ignoreComponent);
final ViewHandler viewHandler = FacesContextUtil
.getViewHandler(context);
final String viewId = context.getViewRoot().getViewId();
final String url = viewHandler.getActionURL(context, viewId);
if (url != null) {
UrlBuilder urlBuilder = new UrlBuilder();
urlBuilder.setBase(url);
final String encoding = writer.getCharacterEncoding();
if (WindowIdUtil.isNewWindowTarget(htmlForm.getTarget())) {
urlBuilder.add(URLEncoder.encode(WindowIdUtil.NEWWINDOW,
encoding), URLEncoder.encode(JsfConstants.TRUE,
encoding));
}
writer.writeURIAttribute(JsfConstants.ACTION_ATTR, context
.getExternalContext().encodeActionURL(urlBuilder.build()),
null);
}
}