这是对(Managed-Bean best practice)的扩展。我编写了一个AppProperty类,它定义了Class中的各个项目:
public class AppProperties implements Serializable {
private static final long serialVersionUID = 1L;
//contents of AppProperties Object
private String appRepID;
private String helpRepID;
private String ruleRepID;
private String filePath;
private Vector formNames;
//end content
private Session s;
private String serverName;
public String getAppRepID() {
return appRepID;
}
public void setAppRepID(String appRepID) {
this.appRepID = appRepID;
}
//rest if getters and setters
}
在我的bean中,我有以下内容:
import ca.wfsystems.core.AppProperties;
private final Map<String, AppProperties> internalMap = new HashMap<String, AppProperties>();
public ApplicationMap() {
this.buildMap(internalMap);
}
private void buildMap(Map<String, AppProperties> theMap) {
try{
AppProperties ap = null;
Session s = ExtLibUtil.getCurrentSession();
vwApps = s.getCurrentDatabase().getView("vwWFSApplications");
veCol = vwApps.getAllEntries();
ve = veCol.getFirstEntry();
tVE = null;
while (ve != null){
Vector colVal = ve.getColumnValues();
String tAppRepID = colVal.get(2).toString();
ap.setAppRepID(colVal.get(2).toString());
ap.setHelpRepID(colVal.get(3).toString());
ap.setRuleRepID(colVal.get(4).toString());
theMap.put(colVal.get(0).toString(), ap);
}
}catch(Exception e){
System.out.println(e.toString());
}finally{
Utils.recycleObjects(s,vwApps);
}
}
除了ap.setAppRepID(colVal(2).toString())之外,其他一切似乎都正常,出现了编译器错误,即“空指针访问变量ap只能在此处为null” setAppRepID和setHelpRepID的代码相同并且setHelpRepID或setRuleRepID都没有编译器错误。我不确定问题是否出在设置AppProperties ap = null尝试创建AppProperties ap = new AppProperties,但它不是那样的。我想我真的很接近完成这项工作,但是....
感谢所有在我攀登JAVA坡道时对我非常耐心的人。
最佳答案
编译器错误是正确的,此时您的变量ap只能为null。
遵循以下各条陈述
AppProperties ap = null;
至
ap.setAppRepID(colVal.get(2).toString());
而且在任何情况下都不会将其初始化为对象,它仍然为null。
您还会在setHelpRepID或setRuleRepID上看到编译器错误,但是它不会打扰您,因为第一条语句已经存在问题。您可以通过注释掉setAppRepID行来尝试此操作,并且在下一行应看到相同的错误。
在您的AppProperties类中创建一个公共构造函数
public AppProperties() {};
然后尝试改变
AppProperties ap = null;
至
AppProperties ap = new AppProperties();
关于java - 托管 bean 最佳实践的补充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24746448/