La prevención de ESAPI para XSS no funciona

Estoy trabajando para solucionar problemas de secuencias de comandos de sitios cruzados en nuestro código, principalmente en JSPS.

Debajo está el código original

 //scriplet code
    <% String userId = request.getParameter("sid"); 
    ...%>

y en el mismo Jsp tienen

     <input type = hidden name = "userID" value = "<%= userId %>" />

He realizado cambios para incluir esapi-2.1.0.jar en lib y ESAPI.properties, validation.properties en classpath. Luego realizó los siguientes cambios en el código de scriplet para corregir el código anterior

      //scriplet code
    <% String userId = ESAPI.encoder().encodeForHTML(request.getParameter("sid")); 
    ...%>

Pensé que esto solucionaría el problema, pero cuando escaneo mi código usando Fortify, estas líneas se resaltan nuevamente como teniendo un problema XSS. Ayúdenos si tienen alguna idea de cómo se debe manejar esto. Gracias.

------- ACTUALIZACIÓN

Muchas gracias @avgvstvs. Esto es muy perspicaz. Directrices de Follwd, No estoy seguro si me estoy perdiendo algo. Código -

          String              userSID=ESAPI.encoder().encodeForHTMLAttribute(request.getHeader("janus_sid")); session.setAttribute("username",userSID);<input type=hidden name="USERNAME" value="<%= userSID %>"

Y para otra depuración varibale, a continuación se muestra el uso

       String debugFlag =  ESAPI.encoder().encodeForJavaScript(request.getParameter("debug"));var debugFlag = "<%= debugFlag%>";if(debugFlag == "y"){       
        document.title=   title + " (" + host + ")";
        defaultAppTitle = title + " (" + host +  ")";           
    }                                                           

El último análisis de Fortify todavía los enumera como vulnerabilidades :-(

Respuestas a la pregunta(2)

Su respuesta a la pregunta