2013-06-10 2 views
0

Я довольно новичок в groovy, так что медведь со мной, но у меня есть куча аналогичного кода , который я пытаюсь передать в массив . Это довольно просто. У меня есть объявление массива на сверху, а затем объявление переменных, похожих друг на друга ниже. Я только включил три, но на самом деле у меня около 10. За исключением этого не работает и у меня нет идей почему? Если у кого-то есть какие-то идеи, то это очень ценится.Объявление массивного массива

def properties = resource.adaptTo(ValueMap.class) ?: [] 
headerText = properties["headerText"] ?: "" 
bodyText = properties["bodyText"] ?: "" 
footerText = properties["footerText"] ?: "" 

Ошибка ниже:

Caused by: groovy.lang.MissingPropertyException: No such property: headerText for class 
+1

Это должно включать * что * и * как * все не работает. Вы уверены, что у вас есть объявление массива? Массивы Java индексируются по номерам, а не по строкам. Вы пытаетесь сделать пустую карту, '[:]'? Что такое «ValueMap»? Что такое 'resource.adaptTo'? Включает ли он доступ к свойствам сопоставленных свойств? Существует ли свойство? и т. д. –

+0

Предполагаю, что вам нужна карта ('[:]', как сказал Дейв). Другие языки (PHP, я смотрю на вас) называют «массив» даже «хотя это ассоциативная карта. И «массив» в Java/Groovy больше похож на список. –

+0

Если я понимаю это правильно, тогда мой код будет что-то похожее на: ** def properties = resource.adaptTo (ValueMap.class)?: [:] ** ?? –

ответ

1

Я, вероятно, отсутствует что-то, кажется, легко - но:

 
def properties = resource.adaptTo(ValueMap.class) ?: [:] 
def headerText = properties["headerText"] ?: "" 
def bodyText = properties["bodyText"] ?: "" 
def footerText = properties["footerText"] ?: "" 

кажется, что он должен работать.

Если вы используете его как скрипт (не внутри класса), удалите ВСЕ дефисы - они требуются в классах, но будут прерывать скрипты, но если вы используете его как скрипт, я бы ожидал увидеть он говорит, что «свойства» не были определены, а не «headerText», поэтому я предполагаю, что это часть класса.

+0

'[]' это список, так что часть, по крайней мере, никогда не будет работать. Но ИМО остальное тоже неверно; похоже, что это просто не «headerText», как свойство. Это та же ошибка, которую вы получите, если попытаетесь получить доступ к свойству класса, которое не существует, например, 'class Foo {def fname}; f = new Foo(); f ["wat"] ' –

+0

wow Я чувствую себя идиотом, потому что я не декларировал ** def ** спасибо за помощь! –

+0

Затем я забираю его обратно :) За исключением части списка. –

Смежные вопросы