我有以下代码。当我执行它时,出现以下错误。我在另一步骤中运行相同的代码,效果很好,但在当前步骤中失败了。
java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: 17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
def dbData = queryResults;
def mailTable = "<table style='border: 1px solid #ccc;border-collapse: collapse;'>";
def size = 17;
mailTable += "<tr style='border-top: 3px solid #ccc;'><b><u><td style='padding: 10px;bgcolor=#4169E1;'>SKU</td><td style='padding: 10px;bgcolor=#4169E1;'>Currency</td><td style='padding:10px;bgcolor=#4169E1;'>Source</td><td style='padding: 10px;bgcolor=#4169E1;'>Pricing Sort</td><td style='padding: 10px;bgcolor=#4169E1;'>Role</td><td style='padding: 10px;bgcolor=#4169E1;'>Product Manager</td><td style='padding: 10px;bgcolor=#4169E1;'>Price</td><td style='padding: 10px;bgcolor=#4169E1;'>Layout</td><td style='padding: 10px;bgcolor=#4169E1;'>Description</td><td style='padding: 10px;bgcolor=#4169E1;'>Reference</td><td style='padding: 10px;bgcolor=#4169E1;'>Global</td><td style='padding: 10px;bgcolor=#4169E1;'>Status</td><td style='padding: 10px;bgcolor=#4169E1;'>Material</td><td style='padding: 10px;bgcolor=#4169E1;'>Business</td><td style='padding: 10px;bgcolor=#4169E1;'>SB</td><td style='padding: 10px;bgcolor=#4169E1;'>Group</td><td style='padding: 10px;bgcolor=#4169E1;'>GPH Code</td></u></b></tr>"
/**
* filling the html table with opportunity info
* */
def index;
dbData.each {row ->
mailTable += "<tr style='border-top: 3px solid #ccc;'>";
for (index = 0; index < size; ++index) {
mailTable += "<td style='padding: 10px;'>" + row.getAt(index) + "</td>";
}
mailTable += "</tr>";
}
mailTable += "</table>";
答案 0 :(得分:1)
您正在获得Array Index OutOfBoundsException,因为您极有可能尝试访问空Array(0个元素)中的元素。我建议您在尝试从数组中获取元素之前检查数组是否为空。 我不太确定哪个Array在您的代码中引发错误,因为我无法确定数据库调用的作用。但是我猜可能是dbData或mailTable。
尝试这样的事情:
if (dbData.length != 0) {
//run your code here that access the elements
} else { //do nothing..or whatever you want to happen when it's empty, maybe
error? }
答案 1 :(得分:1)
老实说,我对def一无所知。这是某种lisp方法吗?,因为它不是通常的int索引java变量,所以java可能无法理解索引值。我可能是错的,我不知道def方法。非常抱歉,如果我完全错了。
欢呼