Во-первых, этот неприятный код скрипта не нужен:
<c:if test='${not empty jsPostProcess}'>
<input type='hidden' id='jsPostProcess' name='jsPostProcess' value='${jsPostProcess}'>
</c:if>
Далее я надеюсь, что где-то до этого момента значение jsPostProcess было очищено, чтобы не нарушитьразметка (например, в случае, если она содержит кавычки).
Просто вызвать eval()
для такого значения кажется немного опасным, хотя, возможно, вы прекрасно знаете, что это будет.Наконец, я бы предложил, что в качестве альтернативы этому, если код «постобработки» не слишком велик, вы можете отправить его обратно в заголовок ответа.Тогда вам не нужно было бы добавлять бессмысленную разметку на вашу страницу.
О, наконец, вы можете отключить <input>
.Или, альтернативно, вам даже не нужно использовать ввод: вы можете использовать этот трюк:
<script id='jsPostProcess' type='text/plain'>
${jsPostProcess}
</script>
Поскольку атрибут «type» равен «text / plain», браузеры не будут пытаться его выполнитьэтот код, и вы можете получить «текст» элемента <script>
, когда захотите.