首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >HTML标记不会反映在Gxt网格中

HTML标记不会反映在Gxt网格中
EN

Stack Overflow用户
提问于 2017-03-15 12:49:35
回答 2查看 111关注 0票数 1

我有一个GXT网格,我在其中应用html标签来突出显示单词“定义”中的文本"def“。但是,它没有将作为超文本标记语言标记,而是将作为字符串,并将输出显示为<mark>def</mark>ining。你能帮我解决这个问题吗?

代码语言:javascript
运行
AI代码解释
复制
private static String doHighlight(String dtoData){ //dtoData is "defining"
    int dtoLength = dtoData.length();
    int i = -1;
    String newDtoData = null;
    String finalDtoData = null;
    String highlightStartTag = "<mark>";
    String highlightEndTag = "</mark>";

    if (dtoData != null && dtoData != "") {
        i = dtoData.toLowerCase().indexOf("def", i+1);
        if(i<0){
            finalDtoData = dtoData;
        }else{
            newDtoData = highlightStartTag +dtoData.substring(0, i) + dtoData.substring(i, "def".length()) + highlightEndTag;
            finalDtoData = newDtoData + dtoData.substring("def".length(), dtoLength);
            i = -1;
        }
    }
    return finalDtoData;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-20 14:02:44

代码语言:javascript
运行
AI代码解释
复制
private static Map<Integer, String> findMatches(String searchText, String dtoValue, int rowCount) {    
Map<Integer,String> matchesMap = new HashMap<Integer,String>();
if (dtoValue != null && dtoValue != "") {
        i = dtoValue.toLowerCase().indexOf(searchText, i+1);
        if(i>=0){
            newDtoData = dtoValue.replaceAll(searchText, "<span style='background-color: yellow; !important'>"+searchText+"</span>");
            matchesMap.put(rowCount, newDtoData);
            i = -1;
        }
    }
    return matchesMap;

将上面的matchesMap传递给下面的循环,并对行数进行迭代。您可以使用列和行计数来获取单元格。获得单元格元素后,可以设置innerHTML。

代码语言:javascript
运行
AI代码解释
复制
for(int rowId:matchesMap.keySet()){
        if(!matchesMap.get(rowId).isEmpty()){
            Element cellElement = viewComponent.getView().getCell(rowId, columnId); 
            if(cellElement != null){
                cellElement.setInnerHTML(matchesMap.get(rowId));
            }
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2017-03-15 14:19:17

因为需求与布局有关,所以我个人会使用网格的该列的单元格。

像这样的东西应该是有效的:

代码语言:javascript
运行
AI代码解释
复制
myColumn.setCell(new AbstractCell<String>() {
      @Override
      public void render(Context context,
                         String value,
                         SafeHtmlBuilder sb) {
        if (value != null && value != "") {
          int i = value.toLowerCase().indexOf("def");
          if (i < 0) {
            sb.append(value);
          } else {
            sb.appendHtmlConstant("<mark>")
              .append(value.substring(0, i))
              .append(value.substring(i, "def".length()))
              .appendHtmlConstant("</mark>")
              .append(value.substring("def".length(), value.length()));
         }
       }
     }
   });

当然,这还不是完整的,但它应该给你一个如何解决它的想法。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42810284

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文