преобразование строк в регистр Title в JSTL

Есть ли способ преобразовать строку в регистр Title, используя теги JSTL?

Заранее спасибо.


person Community    schedule 27.01.2009    source источник
comment
Отличный вопрос и еще один недостаток JSTL. Заглавный регистр — это очень простая потребность в отображении. Все эти ответы хороши и действительны, но я считаю оскорбительным, что создатели JSTL не включили эту функциональность напрямую.   -  person Cfold    schedule 12.07.2018


Ответы (3)


Альтернативой преобразованию строки на сервере является позволить CSS сделать всю работу< /а>:

text-transform: capitalize
person McDowell    schedule 27.01.2009
comment
здорово. Это помогло, так как я нуждался в заголовке только для целей презентации, CSS был бы лучшим решением. Спасибо. - person ; 28.01.2009
comment
Почему всегда ищет сложный ответ? Ваше решение действительно лучшее! - person Romain Linsolas; 28.01.2009
comment
В некотором смысле это не очень хороший ответ на то, как я могу сделать это в JSTL. Мне нравится объяснение romaintaz, так как оно лучше описывает, как кто-то может сделать это в JSTL. - person Nick Spacek; 12.10.2011
comment
@Nick - я думаю, что это справедливый комментарий, но время от времени читать между строк и предлагать альтернативы не вредно. - person McDowell; 12.10.2011
comment
Это работает только с определенными входными данными с помощью CSS. Например, если мои входные данные ВСЕ ЗАГЛАВНЫ, капитализация не будет работать, мой текст останется как есть в формате верхнего регистра. ПРИМЕР: кто-то вводит фамилию заглавными буквами. Я хочу отобразить это имя в правильном/заглавном регистре, тогда не используйте CSS, имя будет отображаться всеми заглавными буквами. - person blo0p3r; 02.05.2012
comment
Этот тоже работает для всех верхних регистров. .m_name{текстовое преобразование:нижний регистр; } .m_name:first-letter{ text-transform:uppercase; } - person iBabur; 21.03.2018

Идея:

В классе создайте простой метод, использующий WordUtils из Apache Commons Lang, который будет манипулировать вашей строкой:

import org.apache.commons.lang.WordUtils;

...

public static String titleCase(String input){
   return WordUtils.capitalize(input);;
}

А теперь создайте свой собственный тег (в function.tld):

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">
  <description>functions library</description>
  <display-name>functions</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>xfn</short-name>
  <uri>http://yourdomain/functions.tld</uri>
  <function>
    <description>
      Title case a String
    </description>
    <name>titleCase</name>
    <function-class>Functions</function-class>
    <function-signature>java.lang.String titleCase(java.lang.String)</function-signature>
    <example>
      ${xfn:titleCase(string)}
    </example>
  </function>
</taglib>

ps: меня очень вдохновил этот пост, чтобы дать ответ.

person Romain Linsolas    schedule 27.01.2009
comment
Он ищет заглавные буквы, а не все заглавные. - person Eric Labashosky; 31.10.2009
comment
Метод Capitalize() не преобразует вашу строку в верхний регистр! В конце концов сделайте StringUtils.capitalize(StringUtils.lowerCase(theString)) ! - person Romain Linsolas; 31.10.2009
comment
Возможно, на момент ответа он был недоступен, но вы также можете использовать заглавные буквы в WordUtils. Он обрабатывает слова, которые уже написаны заглавными буквами. - person Nick Spacek; 12.10.2011

В JSTL это не так уж сложно...

${fn:toUpperCase(fn:substring(user.firstName, 0, 1))}${fn:toLowerCase(fn:substring(user.firstName, 1, -1))}
person jonnad    schedule 10.08.2010
comment
Это не удается, когда средний инициал включен в имя. Он заканчивается в нижнем регистре. - person Connie DeCinko; 14.06.2021