code: public int doEndTag() throws JspException
      {
          Object val = evaluateDataSource();
  
          ServletRequest req = pageContext.getRequest();
  
          if (_dataInput != null) {
              val = _dataInput.toString();
          }
  
          // if there were expression errors report them
          if (hasErrors())
              return reportAndExit(SKIP_BODY);
  
          if (val != null) {
              _value = val.toString();
          }
  
          // Create an appropriate "input" element based on our parameters
          ByRef ref = new ByRef();
          nameHtmlControl(_state, ref);
  
          if (_value != null) {
              InternalStringBuilder sb = new InternalStringBuilder(_value.length() + 16);
              StringBuilderRenderAppender sbAppend = new StringBuilderRenderAppender(sb);
              HtmlUtils.filter(_value, sbAppend);
              _state.value = sb.toString();
          }
  
          // correct for null text here
          if (_state.value == null)
              _state.value = "";
  
          WriteRenderAppender writer = new WriteRenderAppender(pageContext);
          TagRenderingBase hiddenTag = TagRenderingBase.Factory.getRendering(TagRenderingBase.INPUT_HIDDEN_TAG, req);
  
          hiddenTag.doStartTag(writer, _state);
          hiddenTag.doEndTag(writer);
  
          if (!ref.isNull())
              write((String) ref.getRef());
  
          // Continue processing this page
          localRelease();
          return SKIP_BODY;
      }
docs: Generate the hidden input tag.
  @throws JspException if a JSP exception has occurred