2013-05-06 41 views

Trả lời

3

Bạn có cố gắng thực hiện:

#set($myMap = {}) 

Ngoài ra, hãy chắc chắn rằng bạn đang sử dụng một phiên bản hiện đại của Velocity. Những cái cũ không có cú pháp bản đồ trong VTL.

+0

Ồ, tôi có thể đã phạm sai lầm trong mọi lúc. #set ($ myMap = {}) + $ myMap.put ("mykey1", "myvalue") tạo đầu ra> $ myMap.đặt ("mykey1", "myvalue"). Tôi mới bắt đầu với Velocity. Tôi nghĩ khi lệnh là một phần của đầu ra, lệnh không được chấp nhận/nhận ra. Nó là một lỗi hoặc tại sao lệnh là một phần ot đầu ra nếu tất cả mọi thứ đang chạy một cách chính xác? – Wagner

14

Như Nathan nói, bạn nên sử dụng:

#set ($myMap = {}) 

để tạo ra một bản đồ mới và gán nó vào một biến.

Bây giờ, tại sao cuộc gọi put được in.

  1. Bất cứ điều gì đó không phải là bên trong một chỉ thị, như #set(not printed) hoặc #if(not printed) hoặc #foreach(again not printed), được in, bao gồm văn bản miễn phí, các biến, và phương pháp gọi.

  2. Vận tốc không thể phân biệt giữa $myMap.get('mykey')$myMap.put('key', 'value'), do đó, kết quả của cuộc gọi put được in.

  3. Bất cứ khi nào một thứ không thể được đánh giá đúng, vì biến không được xác định hoặc một nơi nào đó dọc theo dòng, phương thức trả về null, mã không được đánh giá bị bán phá giá theo nghĩa đen vào đầu ra.

  4. Là tài liệu của các trạng thái phương thức put, hàm trả về giá trị trước đó được lưu trữ cho khóa đó hoặc null nếu không có giá trị nào được đặt.

  5. Tổng hợp tất cả, việc in dòng đó là bình thường.

Để thử lý thuyết này ra, bạn có thể làm điều này:

#set ($myMap = {}) 
$myMap.put('key', 'first value') 
$myMap.put('key', 'second value') 
$myMap.get('key') 

này sẽ được in:

$myMap.put('key', 'first value') 
first value 
second value 

Có hai điều bạn có thể làm như vậy mà dòng isn' t đã in:

  1. Lưu trữ kết quả của chức năng trong một biến tạm thời: #set ($discard = $myMap.put('key', 'value')

  2. Sử dụng phương pháp gọi im lặng: $!myMap.put('key', 'value')

tôi khuyên bạn nên là người đầu tiên, kể từ khi một giây vẫn sẽ in một cái gì đó khi bạn đang thay thế một giá trị hiện có .