【问题标题】:Cannot get substring xwiki无法获取子字符串 xwiki
【发布时间】:2013-08-22 07:10:30
【问题描述】:

我正在尝试获取子字符串,但我得到了 Failed to execute the [velocity] macro。我不知道为什么会这样。这是我的代码:

#if ($text != '' )
   #set ($textwo = "${text.substring(0,4)}")
   if($textwo != "Tags" )
      #getSearchResults()
      (% class="search-results-container" %)(((
         #displaySearchFacets($searchResponse)
         (% class="search-results-left" %)(((
            #displaySearchResultsSort()

            #displaySearchResults()
            )))
          )))
  #end
  #if ($textwo == 'Tags')
    #getTaggedResult
  #end
#end

如果我删除#set ($textwo = "${text.substring(0,4)}") 行,我不会再收到错误,当然它也不起作用。

【问题讨论】:

    标签: velocity xwiki


    【解决方案1】:

    如果您单击 //Failed to...// 错误消息,它将展开以显示完整的堆栈跟踪。您可能会发现错误的真正原因是:

    原因:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:4

    表示输入的字符串少于4个字符。

    $text 应该是什么?为什么只保留前四个字符? #if ($text.startsWith('Tags')) 会是等效的检查吗?

    在 XWiki 中,您还可以使用$stringtool,实际上是StringUtils from Apache Commons Lang 3,它具有针对extracting a piece of text、或extracting a prefix、或checking for a prefix 等的错误预防方法。

    【讨论】:

    • 感谢您的回复,抱歉回复晚了。要回答您的问题,$text = 在框中输入的搜索文本,要回答您的第二个问题,我会将您定向到 link,因为我无法直接将数据从 javascript 发送到速度(正如您所说,谢谢),我想我使用 javascript 来操作 $text,作为我的问题的解决方案,对于您的第三个问题,是的,这会起作用,但我没有使用它,因为我不知道它存在。
    • (我必须在第二条评论中继续,没有剩余字符)所以我最初的问题是link,我使用 javascript 来操作搜索文本,然后检查操作,如果它存在,然后显示标记的文档,如果不是搜索关键字。它现在有效,但如果您有更好的想法,请分享。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 2015-07-07
    • 2020-05-16
    • 2016-06-30
    • 2014-04-02
    • 1970-01-01
    相关资源
    最近更新 更多