2014-09-30 75 views
0

所以试图做一些事情(我认为应该很简单) 在代码中进一步设置一个值,然后做一个if语句来检查我设置的值。 设置变量的代码片段。下面简单(?)grails如果语句

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

由于您在ifelse块中声明了headline变量,因此其范围仅限于这些块,这就是为什么稍后尝试引用它时会出现错误的原因。你想这样的事情:

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

感谢谁回答(即使史蒂夫删除他的答案)。这是因为你不能在if语句中定义新的变量吗? – vrghost 2014-09-30 14:11:16

+1

你可以在一个'if'块中定义新的变量,但是如果你这样做了,它们只能从该块内访问。 – 2014-09-30 14:24:07