Как объединить строки в EL?

По-видимому, вы не можете использовать оператор normal + для добавления строк в jsp... по крайней мере, он не работает для меня. Есть ли способ сделать это? Фрагмент моего кода, который имеет отношение к...

${fn:length(example.name) > 15 ? fn:substring(example.name,0,14) + '...' : example.name} // does not work because of + operator

1 ответ

Решение

EL не знает оператора конкатенации строк. Вместо этого вы бы просто встроили несколько выражений EL вместе. + Оператор в EL исключительно оператор сумм для чисел.

Вот один из способов, как вы могли бы сделать это:

<c:set var="tooLong" value="${fn:length(example.name) > 15}" />
${tooLong ? fn:substring(example.name,0,14) : example.name}${tooLong ? '...' : ''}

Другой способ - использовать для этого функцию EL, в которой вы можете справиться с этим, используя чистую Java. Например, см. Главу "Функции EL" в нижней части моего ответа в " Скрытые функции JSP/Servlet". Вы хотели бы закончить как что-то вроде:

${util:ellipsis(example.name, 15)}

с

public static String ellipsis(String text, int maxLength) {
    return (text.length() > maxLength) ? text.substring(0, maxLength - 1) + "..." : text;
}
Другие вопросы по тегам