0

I am trying to get a substring but I get a Failed to execute the [velocity] macro. I have no idea why this is happening. Here is my code:

#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

If I remove the line #set ($textwo = "${text.substring(0,4)}"), I dont get the error anymore and ofcourse it does not work.

4

1 回答 1

0

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

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

这意味着输入字符串少于 4 个字符。

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

在 XWiki 中,您还可以使用$stringtool,它实际上是来自 Apache Commons Lang 3 的 StringUtils ,它具有用于提取一段文本提取前缀检查前缀等的防错方法。

于 2013-08-20T12:13:57.203 回答