在标有$的行中显示以下消息:
此行有多个标记 - 空指针访问:变量InformeSalvaguardasAGR在此处只能为null 地点 - 空指针访问:变量InformeSalvaguardasAGR在此处只能为null 位置
但我不知道为什么,InformeAmenazasAGR是一个优秀的变量,他们可以访问。为什么要显示此消息以及我如何才能正确使用它?
List<Object> InformeAmenazasAGR = null;
List<Object> InformeSalvaguardasAGR = null;
try {
Locale locale = (Locale)request.getSession().getAttribute(Globals.LOCALE_KEY);
if (locale == null){
locale = Locale.getDefault();
}
ResourceBundle recursos = ResourceBundle.getBundle(ProcopGlobals.FICHERO_MULTILENGUAJE,locale);
manager = new AGRInformesManager();
// EXTRAER TODAS LAS AMENAZAS.
InformeAmenazasAGR = manager.preparaInformeRiesgoActivos(idDimension, tipoActivo, idActivo, tipoActivoTexto, nombreActivo, recursos);
for (int i = 0; i < InformeAmenazasAGR.size()-1; i++) {
String Amenaza = InformeAmenazasAGR.get(i).toString();
Amenaza = Amenaza.substring(1,3);
Object resultadoQuery = manager.SalvaguardaPorAmenaza(Amenaza);
if(resultadoQuery!= null){
$ InformeSalvaguardasAGR.add(resultadoQuery);
} else {
}
}
if (InformeSalvaguardasAGR != null) {
//Prueba
String informetexto =InformeSalvaguardasAGR.toString();
}
} catch( Exception e ) {
log.error( "No fue posible generar el informe AGR para el Tipo: "+tipoActivo+" Activo: "+idActivo+" en Dimension: "+idDimension+".EX:" + e.toString());
e.printStackTrace();
} finally {
if( manager != null ) {
try {
manager.closeDAO();
} catch( Exception e ) {
e.printStackTrace();
}
manager = null;
}
}
JSONArray JSonArray = new JSONArray();
JSonArray.put(InformeSalvaguardasAGR);
String InformeSalvasAGR = JSonArray.toString();
InformeSalvasAGR = InformeSalvasAGR.substring(1, InformeSalvasAGR.length()-1);
request.setAttribute("InformeAmenazasAGR", InformeSalvasAGR);
提前谢谢。
答案 0 :(得分:1)
虽然它是全球性的,但它从未被初始化。您无法添加到null列表。因此,将列表初始化为:
List<Object> InformeSalvaguardasAGR = new ArrayList<Object>();
而不是
List<Object> InformeSalvaguardasAGR = null;
答案 1 :(得分:1)
如果try-catch-finally
阻止发生了某些情况,则InformeSalvaguardasAGR
和InformeAmenazasAGR
都不会被初始化并保持null
。将来如果它们是null
,您可以NPE
尝试调用他们的方法。我建议你换掉这个:
List<Object> InformeAmenazasAGR = null;
List<Object> InformeSalvaguardasAGR = null;
用这个:
List<Object> InformeAmenazasAGR = new ArrayList<Object>();
List<Object> InformeSalvaguardasAGR = new ArrayList<Object>();