我是groovy的新手并且在测试中有以下代码:
groovy> def country_list = []
groovy> country_list =['sg', 'ph', 'hk']
groovy> for (String item : country_list) {
groovy> println item
groovy> if (country_list[item].toUpperCase() == "PH")
groovy> isPH = true
groovy> }
groovy> println isPH
在控制台中运行时,会抛出以下异常:
sg
Exception thrown
groovy.lang.MissingPropertyException: Exception evaluating property 'sg' for java.util.ArrayList, Reason: groovy.lang.MissingPropertyException: No such property: sg for class: java.lang.String
at ConsoleScript6.run(ConsoleScript6:5)
错误是什么意思?
我确实解决了这个问题:
isPH = ('PH' in country_list) || ('ph' in country_list)
但是真的想了解上面的错误。 谢谢, 保罗
答案 0 :(得分:2)
这是因为,您有列表country_list
。
但是使用地图表示法来获取值。
sg
是for
循环列表中的第一个元素。它假定从sg
获取属性country_list
并且没有这样的属性,而sg
只有相反的值。
因此出现了错误的错误:
错误groovy.lang.MissingPropertyException: 评估财产的例外情况' sg' for java.util.ArrayList,Reason:groovy.lang.MissingPropertyException:没有这样的属性:sg for class:java.lang.String
您可以使用以下脚本进行简单的检查/断言:
def country_list =['sg', 'ph', 'hk']
def isPH = country_list.find { it.toUpperCase() == 'PH' } ? true : false
assert isPH, 'No ph in the list'
println "Is country list contains ph ? $isPH"
答案 1 :(得分:2)
将country_list[item]
更改为item
。
这是因为groovy查找了类sg
的属性ArrayList
,因为groovy Object.getAt(String property)
方法返回property
的值
答案 2 :(得分:1)
是的错误并不明显;无论如何Try the below code and let me know if it works for you
**CSS**
.inner-table-data
{
margin-bottom: 0;
}
**HTML**
<table class='table table-hover table-bordered table-striped'>
<thead>
<tr>
<th>Status</th>
<th>Name</th>
<th>GuideWire</th>
</tr>
</thead>
<tbody>
<tr data-toggle='collapse' data-target='#info_1'>
<td class="col-sm-4">Good</td>
<td class="col-sm-4">FooBar</td>
<td class="col-sm-4">Something else</td>
</tr>
<tr>
<td colspan='1' class='collapse' id='info_1'>
<div>
<table class="table table-striped inner-table-data">
<thead>
<th>ABC</th>
<th>DEF</th>
</thead>
<tbody>
<tr>
<td>S1</td>
<td>Blah</td>
</tr>
<tr>
<td>S1</td>
<td>Blah</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
<tr data-toggle='collapse' data-target='#info_2'>
<td class="col-sm-4">Good 2</td>
<td class="col-sm-4">FooBar 2</td>
<td class="col-sm-4">Something else 2</td>
</tr>
<tr>
<td colspan='1' class='collapse' id='info_2'>
<div>
<table class="table table-striped inner-table-data">
<thead>
<th>ABC</th>
<th>DEF</th>
</thead>
<tbody>
<tr>
<td>S1</td>
<td>Blah</td>
</tr>
<tr>
<td>S1</td>
<td>Blah</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
引起了问题,我想你想要使用country_list[item].toUpperCase()
。
试试这个:
item.toUpperCase()
在groovyConsole here上运行解决方案。