简单(?)grails如果语句
问题描述:
所以试图做一些事情(我认为应该很简单) 在代码中进一步设置一个值,然后做一个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
任何想法? 我很明显错过了一些东西,因为我甚至试图在彼此之后运行。
答
由于您在if
和else
块中声明了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>")
}
感谢谁回答(即使史蒂夫删除他的答案)。这是因为你不能在if语句中定义新的变量吗? – vrghost 2014-09-30 14:11:16
你可以在一个'if'块中定义新的变量,但是如果你这样做了,它们只能从该块内访问。 – 2014-09-30 14:24:07