简体   繁体   English

使用List时的NumberFormatException <CustomObject> 在数据表中

[英]NumberFormatException when using List<CustomObject> in datatable

I am encountering a NumberFormatException when trying to display a List in a datatable. 我在尝试在数据表中显示List时遇到NumberFormatException。 I know the general reason why this exception occurs, but not able to figure out where it applies in my situation. 我知道发生此异常的一般原因,但无法确定它在我的情况下适用的位置。

Here is my ice:datatable display code 这是我的冰:数据表显示代码

<ice:dataTable id="transformations" var="transformationList" width="700"
value="#{ShowStatusBean.transformationStatusList}" rows="10"    
partialTriggers="refreshButton"  autoSubmit="true">

<ice:column>
<ice:outputText value="#{transformationList.businessDate}" />
</ice:column>

<ice:column>
<ice:outputText value="#{transformationList.service}" />
</ice:column>

<ice:column>
<ice:outputText value="#{transformationList.status}" />
</ice:column>

</ice:dataTable>

And my backing bean code 我的支持bean代码

public List<TransformationBean> getTransformationStatusList() {
    transformationStatusList = new ArrayList<TransformationBean>();
    transformationStatusList.add(new TransformationBean("2012-01-01", "serviceName", "status1"));
    transformationStatusList.add(new TransformationBean("2012-01-02", "serviceName2", "status2"));
    return transformationStatusList;
}

And finally the stack trace 最后是堆栈跟踪

    23:59:57 ERROR [f-tuning)'] D2DFaceletViewHandler     - Problem in renderResponse: For input string: "businessDate"
java.lang.NumberFormatException: For input string: "businessDate"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:449)
    at java.lang.Integer.parseInt(Integer.java:499)
    at com.sun.facelets.el.LegacyELContext$LegacyELResolver.getValue(LegacyELContext.java:138)
    at com.sun.el.parser.AstValue.getValue(AstValue.java:96)
    at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:183)
    at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
    at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:56)
    at javax.faces.component.UIOutput.getValue(UIOutput.java:80)
    at com.icesoft.faces.renderkit.dom_html_basic.OutputTextRenderer.encodeEnd(OutputTextRenderer.java:91)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:369)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:364)
    at com.icesoft.faces.component.ext.renderkit.TableRenderer.encodeChildren(TableRenderer.java:896)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:357)
    at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:95)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
    at com.icesoft.faces.component.util.CustomComponentUtils.renderChild(CustomComponentUtils.java:338)
    at com.icesoft.faces.component.panelpopup.PanelPopupRenderer.encodeBegin(PanelPopupRenderer.java:240)
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:515)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:355)
    at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:95)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:357)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:364)
    at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:95)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:357)
    at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:95)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
    at com.icesoft.faces.component.util.CustomComponentUtils.renderChild(CustomComponentUtils.java:338)
    at com.icesoft.faces.component.paneltabset.PanelTabSetRenderer.writeTabCell(PanelTabSetRenderer.java:983)
    at com.icesoft.faces.component.paneltabset.PanelTabSetRenderer.encodeEnd(PanelTabSetRenderer.java:422)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:539)
    at javax.faces.component.UIData.encodeEnd(UIData.java:573)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:369)
    at com.icesoft.faces.renderkit.dom_html_basic.GridRenderer.encodeChildren(GridRenderer.java:207)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:357)
    at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:95)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:357)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:364)
    at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:95)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:357)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:364)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:364)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:364)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:364)
    at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:364)
    at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:95)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:527)
    at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:490)
    at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:495)
    at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:495)
    at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:495)
    at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:495)
    at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:281)
    at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:155)
    at com.icesoft.faces.application.ViewHandlerProxy.renderView(ViewHandlerProxy.java:70)
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
    at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:51)
    at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:171)
    at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:112)
    at com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:65)
    at com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:48)
    at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:58)
    at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:55)
    at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:77)
    at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:55)
    at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:192)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:67)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

And my TransformationBean 还有我的TransformationBean

public class TransformationBean{

    private String businessDate;
    private String service;
    private String status;

    // constructor 
    // getter and setters
    }

I researched on this issue and found many responses. 我研究了这个问题并发现了很多回复。 But it does look like I am not doing any of those mistakes.. so not sure what I'm missing. 但它确实看起来我没有做任何这些错误..所以不确定我错过了什么。 These are the other links that I found about the same issue. 这些是我发现的关于同一问题的其他链接。

Number format exception when returning values from database(JPA) 从数据库返回值时的数字格式异常(JPA)

NumberFormatException for input String 输入String的NumberFormatException

http://jforum.icesoft.org/JForum/posts/list/16645.page http://jforum.icesoft.org/JForum/posts/list/16645.page

All of these mention that the List<> being returned from the java code is a List of Object[] which is why the its trying to get to the array entry by treating the property as an index attribute.. However , from my code, its clear that I am not returned a List of Object[] , but a properly defined List 所有这些都提到从java代码返回的List <>是一个List of Object [],这就是为什么它试图通过将属性视为索引属性来获取数组条目。但是,从我的代码中,很清楚我没有返回一个Object []列表,而是一个正确定义的List

I have also tested the java code in a JUNit Test case and verified that the return type is a List of TransformationBean objects. 我还在JUNit Test案例中测试了java代码,并验证了返回类型是TransformationBean对象的List。

What am I not doing correctly, folks ? 伙计们,我做得不好?

I was able to fix the problem. 我能够解决问题。 Not sure what the issue was though. 不知道问题是什么。 I just created a new file containing my xhtml displaycode with the same set of information. 我刚创建了一个包含我的xhtml显示代码的新文件,其中包含相同的信息集。 Only thing i changed was to change the var name to bean like so.. 我唯一改变的是将var名称更改为bean,就像这样。

    <ice:dataTable id="transformations" var="bean" width="700"
value="#{ShowStatusBean.transformationStatusList}" rows="10"    
partialTriggers="refreshButton"  autoSubmit="true">

<ice:column>
<ice:outputText value="#{bean.businessDate}" />
</ice:column>

<ice:column>
<ice:outputText value="#{bean.service}" />
</ice:column>

<ice:column>
<ice:outputText value="#{bean.status}" />
</ice:column>

</ice:dataTable>`

And it started working.. Doesn't make sense.. Maybe the app server was caching some previous version that was incorrect.. But looks like my code was right all along.. 它开始工作..没有意义..也许应用服务器缓存一些以前的版本是不正确的..但看起来我的代码一直是正确的..

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

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