我测试了这个源代码:
豆角,扁豆:
private NewAccountObj na;
public class NewAccountObj {
private int userid;
............
public NewAccountObj(int userid.............) {
this.userid = userid;
............
}
public int getUserid() {
return userid;
}
...............
}
// Getters
public NewAccountObj getDataList() {
return na;
}
Run Code Online (Sandbox Code Playgroud)
JSF 页面:
<h:panelGrid columns="2">
<h:panelGroup>User ID</h:panelGroup>
<h:panelGroup>
<h:inputText id="userid" value="#{bean.dataList['userid']}">
</h:inputText>
</h:panelGroup>
......................
</h:panelGrid>
Run Code Online (Sandbox Code Playgroud)
当我提交表格时,我得到了Target Unreachable, 'null' returned null. 你能帮我找出问题所在吗?也许这不是访问 Java 对象的正确方法h:panelGrid?
附:
我在 Glassfish 日志中收到此错误消息:
javax.el.PropertyNotFoundException: /NewAccount.xhtml @38,126 value="#{NewAccountController.dataList['userid']}": Target Unreachable, 'null' returned null
Run Code Online (Sandbox Code Playgroud)
对于上面的代码,NewAccountObj 为 null。所以当getDataList()调用时,它返回null。然后它就会打电话null.getUserId()。
na需要初始化。我在您的评论中看到您有一个很长的构造函数,您应该创建另一个不带参数的构造函数(或对象工作所需的最小值)。
private NewAccountObj na;
public class NewAccountObj {
private int userid;
............
public NewAccountObj() {
new New AccountObj(0,0,...........);
}
public NewAccountObj(int userid.............) {
this.userid = userid;
............
}
public int getUserid() {
return userid;
}
...............
}
// Getters
public NewAccountObj getDataList() {
return na;
}
Run Code Online (Sandbox Code Playgroud)
并像这样更改 datalist getter:
public NewAccountObj getDataList() {
if(na == null){
na = new NewAccountObj();
}
return na;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28776 次 |
| 最近记录: |