web-dev-qa-db-ja.com

速度テンプレートで文字列を整数に変換する方法は?

Xmlからのデータを含む速度テンプレートファイルがあります。文字列を整数型に変換したい。

どうやってやるの?

34
uma

あぁ!行ったことがある。

#set($intString = "9")
#set($Integer = 0)
$Integer.parseInt($intString)

これを行うには、Java基本速度。$ Integer変数は、Java .parseIntにアクセスするために使用できる整数オブジェクトにすぎません。

編集:上記のコードはデモ用です。もちろん、最適化する方法があります。

79
Quotidian

速度コンテキストをある程度制御できる場合は、Velocityテンプレートで変数を設定する必要性を軽減する代替手段があります。

_Context velocityContext = new Context();
velocityContext.put(Integer.class.getSimpleName(), Integer.class);
_

これにより、$Integer.parseInt($value)を使用してテンプレートで_Java.lang.Integer_の静的メソッドを呼び出すことができ、テンプレートで型変換を実行する前に#setが呼び出されたことに依存しません。

9
ATG

parseIntの問題は、文字列が解析できない場合に例外をスローすることです。 NumberTool がコンテキストにロードされている場合、parseIntよりも優れたソリューションは次のとおりです。

#set($intString = "009")
#set($Integer=$numberTool.toNumber($intString).intValue())

#if($Integer)
 ## ok
#else
 ## nok
#end

NumberToolも$numberとしてロードされる場合があります。

ただし、小さな欠点は、NumberToolが最初に見つけた数を単純に解析し、残りを無視するため、「123a」=> 123であるということです。

1
buergi