@Override
  public void encodeMarkupEnd(FacesContext facesContext, UIComponent uiComponent)
      throws IOException {

    // Finish the encoding of the hidden text input by delegating to the renderer from the JSF
    // runtime.
    DelegationResponseWriter delegationResponseWriter =
        getDelegationResponseWriter(facesContext, uiComponent);
    super.encodeMarkupEnd(facesContext, uiComponent, delegationResponseWriter);

    // Finish the encoding of the outermost </div> element.
    ResponseWriter responseWriter = facesContext.getResponseWriter();
    responseWriter.endElement("div");
  }
  @Override
  public void encodeMarkupBegin(FacesContext facesContext, UIComponent uiComponent)
      throws IOException {
    ResponseWriter responseWriter = facesContext.getResponseWriter();

    // Start the encoding of the outermost <div> element.
    String clientId = uiComponent.getClientId(facesContext);
    responseWriter.startElement("div", uiComponent);
    responseWriter.writeAttribute("id", clientId, "id");

    // Encode the entire boundingbox <div>...<div> element.
    String defaultBoundingBoxClientId = getDefaultBoundingBoxClientId(facesContext, uiComponent);
    responseWriter.startElement("div", uiComponent);
    responseWriter.writeAttribute("id", defaultBoundingBoxClientId, "id");
    responseWriter.endElement("div");

    // Start the encoding of the hidden text input by delegating to the renderer from the JSF
    // runtime.
    DelegationResponseWriter delegationResponseWriter =
        getDelegationResponseWriter(facesContext, uiComponent);
    super.encodeMarkupBegin(facesContext, uiComponent, delegationResponseWriter);
  }