我最近沒有使用Velocity,但是我確定用於工作的某些東西現在不起作用 - 唯一的區別是我可以想到自從我最後一次使用它,現在是我們從v1.6.4升級到v1.7。
在我們的Java代碼中,我們在腳本上下文中添加了一個值,該值是一個逗號分隔的字符串;
context.put("value", "'a','b','c'")
(這個例子已經簡化了)。
在我的速度代碼,如果我說的話;
$value -- it prints 'a','b','c'
$value.split(",")[0] -- it prints 'a'
$value.split(",").size() -- it prints 3
但是,如果我試着說
#foreach ($val in $value.split(","))
-- $val
#end
它不顯示任何信息。事實上,如果我說
#set ($val = $value.split(","))
#if (! $val)
-- print null message here
#end
它進入if塊並說$ val爲空。
在一個點上,我想我會是聰明,沿以下
#set ($count = $value.split(",").size())
#foreach ($item in [0..$count])
-- reference $value.split(",")[$item]
#end
行做的東西,但它根本不希望使用的從$值派生的任何RHS。
最後,如果我做了以下;
#set ($value = "'a','b','c'")
#foreach ($val in $value.split(","))
-- Write out $val
#end
它的工作原理與預期一致。有一些關於將它作爲一個變量傳遞給引擎的問題,阻止它正確處理。
任何人都知道爲什麼這不工作?任何可能的解決方法?
在此先感謝,
p.s.
你肯定有像「有一個在變量名拼寫錯誤」沒有簡單的答案?它應該確實有效,它對我來說是一個簡單的測試。 –
您的陳述「有些東西會將它作爲一個變量傳遞給引擎,導致它無法正確處理。」似乎是一個可能的解釋,因爲我不能讓它工作,除非我在'in'的右邊做了'split'。 –