Как получить доступ к статическим участникам в шаблоне Velocity?

Мы можем использовать [[ вместо &, как с $, он ищет столбец с именем «col1» или «col2» вместо значения, связанного с аргументом

fun1 <-  function(dataset,col1,col2) {
  levels(dataset[[col1]]) <- c(levels(dataset[[col1]]), "ABC")
  dataset[[col1]][dataset[[col2]]==2]  <- "ABC"
  return(dataset)
  }

fun1(df, "B", "A")
#  A   B    C
#1 1 USA 1999
#2 2 ABC 1999
#3 3 GER 1999
#4 3 GER 1999

данные

df <- structure(list(A = c(1L, 2L, 3L, 3L), B = structure(c(2L, NA, 
 1L, 1L), .Label = c("GER", "USA"), class = "factor"), C = c(1999L, 
 1999L, 1999L, 1999L)), row.names = c(NA, -4L), class = "data.frame")
10
задан matt b 20 January 2009 в 17:17
поделиться

3 ответа

Я выяснил обходное решение, которое позволяет мне добавлять каждого User.Status возразите против Скоростного контекста, который избегает любого вида ссылок на константы или магические числа в шаблоне.

На стороне контроллера/Java:

// put the statuses directly into the model
Map statusMap = new HashMap();
statusMap.put("user", User.Status.USER);
statusMap.put("groupOperator", User.Status.ADMIN);
...
modelAndView.addObject("statusmap", statusMap);

И затем в шаблоне как эти значения можно сослаться так:

#if($user.status == $statusmap.user)
   You are a regular user
#elseif($user.status == $statusmap.admin)
    You are an administrator
##etc...
#end
8
ответ дан 3 December 2019 в 21:23
поделиться

Да, Скорость не делает исходно grok классов и пакетов. Вы могли сделать то, что Вы сделали или используете класс FieldMethodizer для автоматизации этого. Другой опцией был бы FieldTool в VelocityTools 2.0.

6
ответ дан 3 December 2019 в 21:23
поделиться

Попробуйте использовать FieldMethodizer of Velocity, это не лучшее решение, но вы можете что-то сделать.

С помощью этого класса вы можете вызывать статические общедоступные константы, см. Ссылку:

FieldMethodizer API

3
ответ дан 3 December 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: