Проблема с выводом HTML в JSP - PullRequest
0 голосов
/ 14 мая 2009

У меня есть код, который генерирует некоторый HTML, но когда я пытаюсь вывести этот контент в jsp, все «<» заменяются на «<code>&lt;», а все «>» на «&gt;». Вот фрагмент, который отображает результат:

<c:out value="${data}"/>

Может кто-нибудь объяснить, чем вызвана замена персонажа и как этого избежать?

PS: я пробовал свойство escapeXml = 'false' тега <c:out/>, вообще ничего не отображается.

Спасибо, Наташа

Ответы [ 4 ]

1 голос
/ 14 мая 2009

Тег out работает так, как и должен - если вы хотите вывести буквальное значение, вы можете напрямую вставить EL expressen $ {data} в ваш текст. То есть вместо

Some content <c:out value="${data}"/> some more content

вы бы использовали

Some content ${data} some more content 

в вашем JSP.

Прежде чем вы рассердитесь на c: out, пожалуйста, обратите внимание, что вывод часто является чем-то, что пользователь добавил туда - возможно, с каким-то нежелательным кодом. Представьте себе использование $ {data} в StackOverflow вместо (C # версии) c: out: -)

1 голос
/ 14 мая 2009

Что вы хотите, чтобы сгенерированный HTML делал, чтобы он был разметкой, используемой браузером, или вы хотите, чтобы он отображался на последней странице, например, в качестве примера кода, видимого пользователю? Без escapeXml = 'false' он будет выводиться в браузер как HTML и интерпретироваться вместе со всей другой разметкой. С escapeXml = 'true' он будет превращен в экранированную разметку, которая отображается для конечного пользователя. Так что все зависит от того, что вы пытаетесь сделать.

Если вы хотите, чтобы символы <и> были видимы для конечного пользователя, они должны отображаться как & lt; и & gt; в разметке.

Ник

0 голосов
/ 14 мая 2009

<c:out value="${data}"/> экранирует символы HTML, а ${data} - нет. Взгляните на этот связанный вопрос .

0 голосов
/ 14 мая 2009

в теге c: out есть атрибут escapeXml, для которого по умолчанию установлено значение true, задайте для него значение false, и экранирование не будет выполняться, т. Е. Ваш HTML-код будет выводиться как есть в браузере.

...