2014-09-30 178 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