\n не представляет символ новой строки в выражении EL.
Решение, которое устанавливает атрибут pageContext
для символа новой строки, а затем использует его с функцией fn:replace
JSTL, работает
Тем не менее, я предпочитаю использовать библиотеку вкладок Jakarta String для решения этой проблемы:
<%@ taglib prefix="str" uri="http://jakarta.apache.org/taglibs/string-1.1" %>
...
<str:replace var="result" replace="~n" with=";" newlineToken="~n">
Text containing newlines
</str:replace>
...
Вы можете использовать все, что хотите для newlineToken; «~ n» вряд ли появится в тексте, в котором я делаю замену, поэтому для меня это был разумный выбор.