У меня есть JSP , содержащий textarea:

<label for="personalMessage">
  <fmt:message key="text.createapersonalmessage" /> 
  <a class="helpIcon" 
     title="<fmt:message key="description.receiptmessage" />" 
     href="javascript:;">  
    <img src="resources/images/helpIcon.png" 
         width="16" 
         height="16" 
         border="0" 
         align="bottom">
  </a>
</label>
<fmt:message key="text.createapersonalmessage" var="createapersonalmessage">
</fmt:message>
<form:textarea path="personalMessage" maxlength="140" rows="3" cols="20" 
placeholder="${createapersonalmessage}" class="hasPlaceholder" />

textarea с путем personalMessage может содержать символы новой строки или символы табуляции. Мне нужно сохранить форматирование, когда содержимое отправляется обратно на мой контроллер. Прямо сейчас я вижу, что все символы новой строки / вкладки преобразуются в пробелы с помощью Spring после нажатия кнопки отправки.

<input type="submit" 
       name="" 
       value="<fmt:message key="text.savesettings"/>" 
       id="" 
       class="css3button" style="width:auto;" />

Можно ли сохранить символы новой строки / табуляции? Я пробовал использовать / n, / r / n, & # 10 и & # 13 и пробел-pre в моем css, но, похоже, ничего не работает.

Изменить: я использую Spring MVC. Итак, после нажатия кнопки submit мои сеттеры вызываются весной, и в данных, отправленных в сеттер, все символы новой строки / вкладки заменяются пробелами. У меня нет способа отличить желаемые пробелы от «преобразованных» пробелов.

1
Manali 21 Авг 2014 в 01:45
Насколько я знаю, это поведение si стандартов, текстовое поле разделит все обратно после отправки. Возможно, вам придется сделать это с помощью JavaScript.
 – 
tmarwen
21 Авг 2014 в 01:59
Нет, вы можете отправлять переводы строк в текстовое поле.
 – 
Stefan Haberl
21 Авг 2014 в 02:01

3 ответа

Лучший ответ

Хорошо, очевидно, все, что мне нужно, это установить

wrap = "physical"

Для моего textArea.

Спасибо за вашу помощь!

1
Manali 22 Авг 2014 в 01:40

Ваша форма Spring выглядит правильно, и я думаю, что Spring также правильно обрабатывает ваши данные.

Вам нужно заменить символы новой строки '\ n' на HTML

<br/>

Тег при выводе данных.

0
Stefan Haberl 21 Авг 2014 в 02:05
Не могли бы вы привести пример? прямо сейчас я пытаюсь сделать это: var myTextareaVal = $('#personalMessage').value; var myLineBreak = myTextareaVal.replaceAll(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '
'); $('#personalMessage').value = myLineBreak; не уверен, что это правильно
 – 
Manali
21 Авг 2014 в 02:16
Не могли бы вы включить код (JSP), где вы выводите личное сообщение?
 – 
Stefan Haberl
21 Авг 2014 в 09:38

Добавление htmlEscape="false" к вашему определению <form:textarea> должно работать ...

Это позволит избежать замены символов, которые недопустимы в HTML, например, новых строк и вкладок, среди прочего.

0
Cristian Meneses 21 Авг 2014 в 02:15
<form:textarea path="personalMessage" maxlength="140" rows="3" cols="20" htmlEscape="false" placeholder="${createapersonalmessage}" class="hasPlaceholder" не работал. Это правильный способ сделать это? Или есть какой-то другой способ?
 – 
Manali
21 Авг 2014 в 02:23
Не то, о чем просил ОП. Установка для htmlEscape значения false будет экранировать только специальные объекты HTML (например, '<'), так что вы начнете видеть текст <br> на своей странице. См. docs.spring.io/spring/docs/current/javadoc-api/org/…
 – 
Stefan Haberl
21 Авг 2014 в 11:01