简体   繁体   English

h:selectManyCheckBox获取NullPointerException

[英]h:selectManyCheckBox gets NullPointerException

This is a Seam application. 这是一个Seam应用程序。

HTML 的HTML

<h:selectManyCheckbox value="#{officeCriteria.carrier}">
    <f:selectItem itemValue="ATT" itemLabel="ATT" />
    <f:selectItem itemValue="VZB" itemLabel="VZB" />
</h:selectManyCheckbox>

backing bean OfficeCriteria: 支持bean OfficeCriteria:

private List<String> carrier;

public List<String> getCarrier() {
    return carrier;
}

public void setCarrier(List<String> carrier) {
    this.carrier = carrier;
}

When I load the page I get a null pointer exception on carrier. 当我加载页面时,在载体上出现了空指针异常。 What am I doing wrong? 我究竟做错了什么?

    2:10,963 ERROR [viewhandler] Error Rendering View[/ONDSearchPage.xhtml]
javax.faces.FacesException: javax.el.ELException: /ONDSearchPage.xhtml @264,81 value="#{officeCriteria.carrier}": Error reading 'carrier' on type dne.nmt.ond.model.OfficeCriteria_$$_javassist_seam_6
    at javax.faces.component.UIOutput.getValue(UIOutput.java:187)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.getCurrentSelectedValues(MenuRenderer.java:593)
    at com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.encodeEnd(SelectManyCheckboxListRenderer.java:117)
    ....
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.ELException: /ONDSearchPage.xhtml @264,81 value="#{officeCriteria.carrier}": Error reading 'carrier' on type dne.nmt.ond.model.OfficeCriteria_$$_javassist_seam_6
    at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76)
    at javax.faces.component.UIOutput.getValue(UIOutput.java:184)
    ... 95 more
Caused by: java.lang.NullPointerException
    at dne.nmt.ond.model.OfficeCriteria.getCarrier(OfficeCriteria.java:108)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    .....
    at org.jboss.el.parser.AstPropertySuffix.getValue(AstPropertySuffix.java:53)
    at org.jboss.el.parser.AstValue.getValue(AstValue.java:67)
    at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
    ... 96 mor

What is in OfficeCriteria.java line 108? OfficeCriteria.java第108行中的内容是什么? Something you are referencing there is null, and I guess you aren't expecting it to be. 您所引用的东西为空,我想您并不期望它为空。

What I suggest is that you set an empty list (and not null ) for the property carrier : 我建议您为属性载体设置一个空列表(而不是null ):

private List<String> carrier = new ArrayList<String>();

public List<String> getCarrier() {
        return carrier;
}

public void setCarrier(List<String> carrier) {
        this.carrier = carrier;
}

The answer is that my original code works as it is. 答案是我的原始代码按原样工作。

The difficulty (and what I left out) was a debugging statement that referenced an element in the list. 困难(以及我遗漏的)是一​​个调试语句,它引用了列表中的一个元素。 Thanks to the person who suggested I actually look at line 108. :-) 感谢建议我实际查看第108行的人。:-)

And BTW to the person who suggested initializing this with a new List, I had tried that already and got some error (I can't remember what). 顺便说一句,建议使用新列表进行初始化的人,我已经尝试过了,但遇到了一些错误(我不记得了)。

Thanks for the help. 谢谢您的帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM