2014-09-30 5 views
0

Так что пытаюсь что-то сделать (что, я думаю, должно быть простым) Установка значения далее в коде, а затем выполнение оператора if, чтобы проверить, к чему я его установил. Кусок кода, который устанавливает переменную. Скопировано в нижеSimple (?) Grails if statement

if (params.headers == null) { 
    def headline="1" 
    render ("Starting to read on line 1<BR>") 
} else { 
    def headline="0" 
    render ("Skipping line 1<BR>") 
} 

Затем немного дальше вниз в контроллере я следующее

if (headline == "0") { 
    render "Skipped line for ${fields[0]}" 
    headline = "1" 
} else { 

И всякий раз, когда я запускаю это я получаю следующее сообщение об ошибке»

No such property: headline for class: regmap.CountryuploadController. Stacktrace follows: 
Message: No such property: headline for class: regmap.CountryuploadController 
    Line | Method 
->> 25 | doCall in regmap.CountryuploadController$_loadcsv_closure1$$EOrLxdfM 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|  34 | eachLine in org.grails.plugins.csv.CSVReaderUtils 
|  47 | eachLine in  '' 
| 140 | doCall in CsvGrailsPlugin$_closure4_closure12 
|  22 | loadcsv . in regmap.CountryuploadController$$EOrLxdfM 
| 198 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter 
|  63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter 
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor 
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker 
^ 745 | run  in java.lang.Thread 

Любой идеи? У меня явно чего-то не хватает, поскольку я даже пытался запустить его друг за другом.

ответ

3

Поскольку вы объявляете переменную headline внутри блоков if и else, ее область действия ограничена этими блоками, поэтому вы получаете сообщение об ошибке при попытке ссылаться на нее позже. Вы хотите что-то вроде этого:

def headline 
if (params.headers == null) { 
    headline="1" 
    render ("Starting to read on line 1<BR>") 
} else { 
    headline="0" 
    render ("Skipping line 1<BR>") 
} 
+0

Спасибо, кто ответил (даже если SteveD удалил его ответ). Это потому, что вы не можете определить новые переменные внутри оператора if? – vrghost

+1

Вы можете определить новые переменные внутри блока 'if', но если вы делаете это, они доступны только из этого блока. –