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

来自阵列的速度模板滴元

谭凯
2023-03-14

我试图将velocity模板中数组的最后一个元素删除,然后将其连接成字符串,并在下面的“classname”:键中显示结果:

    #set($elem = '"System.NotImplementedException: Test Exception')
    #set($trace = $elem.replace('"',""))
    #set($tracearray = $trace.split("\."))
    #set($arraysize = $tracearray.size())
    #set($lastelem = $tracearray.size() - 1)
    {
      "className":$tracearray.remove($lastelem).toString(),
      "method":"$tracearray[$lastelem]"
    }#if($foreach.hasNext),#end
    #end
  ]

我尝试了几种不同的方法来让数组删除元素并将其连接到一个字符串中,但到目前为止还没有任何运气。

从上面的示例中,我希望实现以下输出。

{
  "className":"System",
  "method":"NotImplementedException: Test Exception"
}

$elem变量将保存不同长度的字符串,其中有不同数量的.要拆分,这样数组的长度就会不同。

共有1个答案

郑博
2023-03-14

如果只需要移除最后一个元素,为什么要麻烦拆分整个字符串呢?您可以进行一些解析来提取类名:

#set($elem = '"System.NotImplementedException: Test Exception')                                                                                                                                                 
#set($trace = $elem.replace('"',""))
#set($dot = $trace.lastIndexOf('.'))
#set($className = $trace.substring(0, $dot))
#set($method = $trace.substring($dot + 1))
{
  "className": "$className",
  "method": "$method"
}

或者,为了配合结尾的消息可能包含一个点的事实:

#set($elem = '"System.NotImplementedException: Test Exception')                                                                                                                                                 
#set($trace = $elem.replace('"',""))
#set($colon = $trace.indexOf(':'))
#set($dot = $trace.lastIndexOf('.', $colon))
#set($className = $trace.substring(0, $dot))
#set($method = $trace.substring($dot + 1))
{
  "className": "$className",
  "method": "$method"
}

使用您选择的方法,您将需要另一个工具将数组元素与'.'连接回来。所有这些都表明,如果您碰巧能够使用自定义工具填充Velocity上下文,那么使用该自定义工具将更容易完成所有这些工作。

 类似资料:
  • 我在编辑速度模板。它们用于生成PDF。问题是我不能预览它们。我看不出模板呈现时会是什么样子。有什么工具可以用来吗?我试过谷歌搜索,但什么也找不到。 另外,我知道如果我在本地加载它,它不会显示变量。我感兴趣的是知道它会是什么样子。布局等。,

  • 我正在将一个应用程序从WebSphere迁移到Tomcat,从Ant迁移到Maven。在此过程中,我们决定对Spring进行更新,并对较新的版本进行少量其他更新。该应用程序可以追溯到2005年。所以不是所有的,都是最新和最伟大的。 其中一个障碍是,迁移到Spring5.0,下降了对速度的支持。我们的应用程序广泛使用的工具。我们用的是Spring2.8之类的!:) 现在,我看到这些声明:

  • 我尝试使用文字块(并解析它们)和指令,但这两个指令都存在问题。它们很笨拙(需要对模板进行一些解析),而且远非优雅。

  • 考虑到以下代码 我得到以下错误 TypeError:参数与任何重载调用不匹配:QImage():参数QImage(QSize,QImage.Format)太多:参数1具有意外类型“numpy.ndarray”QImage(int,int,QImage.Format):参数1具有意外类型“numpy.ndarray”QImage(bytes,int,int,QImage.Format):参数1具有意

  • 我需要用价格值追加$symbol。从db中,我得到的值是:“125.00”、“--”、“废话废话”。 我只需要为有效的整数追加$symbol。如何才能做到这一点,我已经尝试了以下代码: