Как объединить строки в 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;
}