Регулярное выражение для удаления специальных символов в тегах JSTL

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

Например, если значение равно «Дядя по материнской линии», то мне нужно

<option value="MaternalUncle">Maternal Uncle</option>

Я получаю следующее:

<option value="Maternal Uncle">Maternal Uncle</option>

Есть 2 приложения, которые могут использовать эту страницу, и какой файл свойств загружать, зависит от приложения. Если я загружаю значения для приложения 1, значения отображаются правильно. Последнее значение в приложении 1 — «Другие» и не имеет специальных символов. Для приложения 2 он не обрезает пробелы, где последним значением является «дядя по материнской линии». repOptions в коде — это ArrayList со значениями, загружаемыми из файла свойств.Вот мой код:

<select name="person" id="person">
      <option value="na">Select the relationship</option>
  <c:forEach items="${repOptions}" var="repOption">
       <option value="${fn:replace(repOption, '[^A-Za-z]','')}">${repOption}</option>
  </c:forEach>
</select>

Первое приложение удаляет пробелы, так как это значение является 4-м в списке из 9. Для app2 это последнее значение, и регулярное выражение не работает. Если я поставлю материнского дядю в качестве первого свойства для app2, тогда это будет работать нормально, но требования должны быть последними.

 <option value="${fn:replace(repOption, ' ','')}">

работает с пробелами, но могут быть такие значения, как Brother/Sister, поэтому мне нужно удалить / также, поэтому я использую регулярное выражение.

6
задан BalusC 26 January 2016 в 13:58
поделиться