当前位置: 首页 > 知识库问答 >
问题:

Spring,Thymeleaf-更改颜色文本

方昊
2023-03-14

我正在做我的项目,在某个阶段,我需要更改某些单词的颜色(在本例中是Hashtags)。

控制器中有以下代码:

(请注意,“resultado”是一个有效字符串,可以毫无问题地获取推文)

 List<Tweet> listaTuits = twitter.searchOperations().search(resultado).getTweets();
    List<ObjetoTuit> listaPropia = new ArrayList<ObjetoTuit>(); 

我使用listaPropia从原始列表中获取所需内容

    for(int i=0; i<listaTuits.size();i++){
            Tweet enUso = listaTuits.get(i);

            String textoAManipular = enUso.getText();

            int contAux = this.listaDe5Elementos.getNumElementos();

            if(contAux>0 && textoAManipular.contains(this.listaDe5Elementos.getElemento1())){
                textoAManipular.replace(this.listaDe5Elementos.getElemento1(), "<span class=\"elem1\">"+this.listaDe5Elementos.getElemento1()+"</span>");
            }
            if(contAux>1 && textoAManipular.contains(this.listaDe5Elementos.getElemento2())){
                textoAManipular = textoAManipular.replace(this.listaDe5Elementos.getElemento2(), "<span class=\"elem2\">"+this.listaDe5Elementos.getElemento2()+"</span>");
            }
            if(contAux>2 && textoAManipular.contains(this.listaDe5Elementos.getElemento3())){
                textoAManipular = textoAManipular.replace(this.listaDe5Elementos.getElemento3(), "<span class=\"elem3\">"+this.listaDe5Elementos.getElemento3()+"</span>");
            }
            if(contAux>3 && textoAManipular.contains(this.listaDe5Elementos.getElemento4())){
                textoAManipular = textoAManipular.replace(this.listaDe5Elementos.getElemento4(), "<span class=\"elem4\">"+this.listaDe5Elementos.getElemento4()+"</span>");
            }
            if(contAux>4 && textoAManipular.contains(this.listaDe5Elementos.getElemento5())){
                textoAManipular = textoAManipular.replace(this.listaDe5Elementos.getElemento5(), "<span class=\"elem5\">"+this.listaDe5Elementos.getElemento5()+"</span>");
            }
            listaPropia.add(new ObjetoTuit(enUso.getId() ,textoAManipular, enUso.getFromUserId(), enUso.getFromUser(), enUso.getProfileImageUrl(), 
                    enUso.getUser().getLocation(),  enUso.getRetweetCount(), enUso.getFavoriteCount(), enUso.getCreatedAt()));
        }

此时,我应该有完整的项目列表,“textoAManipular”字段应该有一个从class=“elem1”到class=“elem5”的标记

ModelAndView mav = new ModelAndView("vistaPrincipal");
mav.addObject("listaobjetostuits", listaPropia);
return mav;

现在,在视图中:

<table class="table table-striped table-bordered">
        <thead>
            <tr>
                <th class="text-center">TEXTO</th>
                <th class="text-center">NOMBRE USUARIO</th>
                <th class="text-center">IMAGEN PERFIL</th>
                <th class="text-center">LOCALIZACION USUARIO</th>
                <th class="text-center">CONTADOR RETUITS</th>
                <th class="text-center">CONTADOR ME GUSTA</th>
                <th class="text-center">FECHA CREACION</th>
            </tr>
        </thead>
        <tbody th:each="tuit : ${listaobjetostuits}">
            <tr>
                <th th:text="${tuit.texto}"></th>
                <th th:text="${tuit.nombreUsuario}"></th>
                <th><img th:src="${tuit.urlImagenPerfil}" class="img-thumbnail" /></th>
                <th th:text="${tuit.localizacionUser}"></th>
                <th th:text="${tuit.numRT}"></th>
                <th th:text="${tuit.numMG}"></th>
                <th th:text="${tuit.fechaCreacion}"></th>
            </tr>
        </tbody>
    </table>   

这是我之前试图解释的问题,我不能改变文本的颜色。我尝试了你告诉我的,将id标记更改为class标记,使用jQuery,甚至使用样式:color标记。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){   
        $(".elem1").css("color", "red");
        $(".elem2").css("color", "blue");
        $(".elem3").css("color", "green");
        $(".elem4").css("color", "yellow");
        $(".elem5").css("color", "brown");   
});
</script>   

这对我不起作用。

知道吗?

共有1个答案

曹超
2023-03-14

您应该使用CSS类而不是ID。因为id在DOM树中应该是唯一的,CSS类不是,我假设您有多个相同类型的单词。

CSS文件:

.red { color:red; }
.green { color:green; }

您的替换方法:

  text.replace(word, '<span class="red">' + word + '</span>')

使用此代码,您可以替换多个单词,并为它们提供相同的CSS类,这将添加颜色。

在您的情况下,您必须在调用替换方法后运行代码,这将是额外的工作,使用CSS,浏览器将为您完成这项工作。

更新:

您的CSS应该如下所示:

<style>
    .red  { color: 'red' };
    .blue { color: 'blue'}; 
     ...
</style>

在这个例子中,它似乎工作得很好。如您所见,我使用了一个映射来存储所有映射(文字到颜色)。那就是代码较短。

Map<String,String> mappings = new HashMap<>();
mappings.put("Trump", "red");

String t = "<th>#Lynch not #Trump #ComeyDay </th>";
for(Map.Entry<String,String> entry: mappings.entrySet()){
   t= t.replace(entry.getKey(), "<span class=\""+entry.getValue()+"\">" +entry.getKey() + "</span>");
}


System.out.print(t);

输出为:

<th>#Lynch not #<span class="red">Trump</span> #ComeyDay </th>
 类似资料:
  • 我一直试图改变我的时间选择器的文本颜色。但是我找不到父样式的位置。我两个都试过了 和 我的是15。我的是20。我已经重建并清理了我的项目 我想我已经解决了所有类似的问题,但没有一个真正为我提供了解决方案。唯一可行的答案是使用某种库,但我不太喜欢这种解决方案。到父级的路径是否与我正在使用的路径有所不同,因为我非常确定我应该能够以某种方式访问它? 编辑 这是主题的应用方式; 请注意,这是我收到的错误(

  • 如何将标题字体颜色更改为白色,填充为绿色?以下是我正在使用的类: 我相信,这是必须插入的代码。

  • 问题内容: 我想在字体为时使用光标。 那可能吗? 问题答案: 您可以定制一个。

  • 问题内容: 我正在编写一个简单的扫雷游戏,现在可以运行,但是我正在处理一些漂亮的细节,例如使每个数字使用不同的颜色。 尝试在上设置文本颜色时,我总是遇到错误。我可以很容易地更改文本和背景,但是不能专门更改文本颜色。 导致一切混乱的部分是: 由于某种原因,我的错误是: 每当我尝试编译时都会发生这种情况,但是当我将其更改为说而不是正常工作时,就会发生这种情况。 问题答案: 对于JButton未定义。要

  • 问题内容: 我制作了一个使用 ActionBarCompat* 的应用程序 * 我使用 SlidingTabLayout 类创建了选项卡。 该类是这样的: SlidingTabLayout.java 但我无法更改标签的颜色… 我的viewpager片段是这样的: 该应用程序运行良好,但我无法更改标签的 颜色文本 … 看到以下示例后,我制作了该应用程序: rudsonlive /导航抽屉-ViewP

  • 如何更改以下首选项XML中和的颜色: 我尝试了我的: 更改标题的颜色,但它也会更改我工具栏中文本的颜色(我不想要)。 似乎正确地更改了摘要的颜色。 如何在不影响工具栏文本颜色的情况下更改标题颜色?