Изменение определенного элемента строки в интерактивную ссылку с использованием JSTL - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь сделать клон Twitter.Сейчас я пытаюсь отобразить любые «хэштеги», которые пользователь публикует в виде кликабельных ссылок.Я делю строку и, если первый символ начинается со знака решетки, оборачиваю ее в тег привязки.В настоящее время у меня есть код на контроллере, но мне было интересно, есть ли способ сделать это в JSTL прямо на странице представлений.

        Transmit tmit = tService.findTransmit(usern.getId());
        String post = tmit.getContent().toString();
        String[] split = post.split(" ");
        for (int i = 0; i < split.length; i++) {
            if (split[i].charAt(0) == '#'){
                split[i] = "<a href='/search'>" + split[i] + "</a>";
            }           
        }
        String joined = String.join(" ", split);  

Есть ли способ сделать это в JSTL?В настоящее время я добавляю все сообщения в свою модель и перебираю их все:

<c:forEach var="post" items="${posts}">
<c:out value="${post.user.name}"/>
<c:out value="${post.content}" />
</c:forEach>

Мои мысли делают мой цикл на ${post.content}, есть ли способ добиться этого?Любые мысли будут оценены!

1 Ответ

1 голос
/ 01 июля 2019

Не существует прямого метода / тега JSTL для замены данных хэш-тегов на привязанные хэш-теги. Но вы можете определить свой собственный тег JSTL, который может сделать эту работу за вас. например,

Создайте класс, который содержит метод для замены ваших данных хэштега на закрепленные метки

 public class HashtagFunctions {  

    public static String replaceHashTags(String s) {
          //Use your existing code of replacing hashtags
    }
}

Включить этот класс в дескриптор библиотеки тегов.

<taglib xmlns="http://java.sun.com/xml/ns/j2ee" version="2.0">  

    <tlib-version>1.0</tlib-version>  
    <short-name>myfn</short-name>  
    <uri>http://www.whatever.com/taglib/trlbt</uri>  

    <function>    
        <name>replaceHashTags</name>    
        <function-class>
            qualified.path.of.tld.class.HashtagFunctions
        </function-class>    
        <function-signature>    
            String replaceHashTags(String s)
        </function-signature>  
    </function> 

    <!-- more functions -->

</taglib>

Теперь используйте этот тег в JSP

${myfn:removeTags(${post.content})}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...