Что касается пункта 2.
<c:set var="errorString" value="${'error'}" />
${someVar.class == errorString.class}
проверит, что две «вещи» являются экземплярами одного и того же класса.
Но может быть лучше преобразовать someVar
в строку, а затем сравнить две строки, поскольку (по крайней мере, в моем случае) someVar не гарантированно является строкой или логическим значением, поэтому может быть что-то еще, что можно преобразовать в строку.
<c:set var="strsomeVar">${someVar}</c:set>
//${someVar}
//${someVar.class}
//${someVar == 'error'}
Какие выходы
//false
//class java.lang.String
//false