Xmlからのデータを含む速度テンプレートファイルがあります。文字列を整数型に変換したい。
どうやってやるの?
あぁ!行ったことがある。
#set($intString = "9")
#set($Integer = 0)
$Integer.parseInt($intString)
これを行うには、Java基本速度。$ Integer変数は、Java .parseIntにアクセスするために使用できる整数オブジェクトにすぎません。
編集:上記のコードはデモ用です。もちろん、最適化する方法があります。
速度コンテキストをある程度制御できる場合は、Velocityテンプレートで変数を設定する必要性を軽減する代替手段があります。
_Context velocityContext = new Context();
velocityContext.put(Integer.class.getSimpleName(), Integer.class);
_
これにより、$Integer.parseInt($value)
を使用してテンプレートで_Java.lang.Integer
_の静的メソッドを呼び出すことができ、テンプレートで型変換を実行する前に#setが呼び出されたことに依存しません。
parseInt
の問題は、文字列が解析できない場合に例外をスローすることです。 NumberTool がコンテキストにロードされている場合、parseInt
よりも優れたソリューションは次のとおりです。
#set($intString = "009")
#set($Integer=$numberTool.toNumber($intString).intValue())
#if($Integer)
## ok
#else
## nok
#end
NumberToolも$number
としてロードされる場合があります。
ただし、小さな欠点は、NumberToolが最初に見つけた数を単純に解析し、残りを無視するため、「123a」=> 123であるということです。