【问题标题】:Iterator of a Bean gives exception in LogsBean 的迭代器在日志中给出异常
【发布时间】:2014-07-04 17:28:59
【问题描述】:

我有一个这样的豆子

private String projectName;
private String projectCode;

它包含有效的 getter 和 setter。

在我的 Action 类中,我将它作为 List 返回并进一步传递给 JSP 以显示。

<select class="ibm-styled" name="selectedProjects" id="selectedProjects" 
        multiple="multiple"   tabindex="1"> 
    <s:iterator value="projectList">
        <option value="<s:property value='projectCode' />">
             <s:property value="projectName"/> 
        </option>
    </s:iterator>
</select> 

从 JSP 中的这段代码中,我得到了 selectedProjects 中选定项目代码的列表,并且它们在表单提交后被设置回 Action 类。

现在,在动作类中,我需要迭代这个选定的项目并在某个字符串中获取所有项目名称......我已经编写了这样的代码

if (selectedProjects != null) {
    String[] selectedProjectsId = selectedProjects.split(", ");
    StringBuffer ProjNames = new StringBuffer();
    Iterator<Project> iterator = projectList.iterator();

    while (iterator.hasNext()) {
        Project beanFromList = iterator.next();
        for (int ProjId = 0; ProjId < selectedProjectsId.length; ProjId++) {
            if (beanFromList.getProjectCode().equals(
                    selectedProjectsId[ProjId])) {
                ProjNames.append(beanFromList.getProjectName()).append(
                        ", ");
            }
        }
    }

    System.out.println(ProjNames);
}

上面的代码没有错误,所有的声明都是正确的……我只能在最后提到的sn-ps中更改我的代码,其余的我不能碰。

我在日志中遇到以下异常......

E ArchiveInputStreamData iterate unable to open file iterator

不知道它是否有效。当执行到达声明迭代器的行时,我确实开始出现调试问题。

请帮帮我!

堆栈跟踪

[7/1/14 20:48:33:731 IST] 00000020 annotations   E ArchiveInputStreamData iterate unable to open file iterator
                                 java.util.zip.ZipException: ZipFile closed
    at java.util.zip.ZipFile.ensureOpenOrZipException(ZipFile.java:424)
    at java.util.zip.ZipFile.access$1100(ZipFile.java:40)
    at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:456)
    at java.util.zip.ZipFile$1.fill(ZipFile.java:241)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:229)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:269)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:328)
    at java.io.FilterInputStream.read(FilterInputStream.java:127)
    at java.io.PushbackInputStream.read(PushbackInputStream.java:180)
    at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:232)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
    at java.util.zip.ZipInputStream.read(ZipInputStream.java:157)
    at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:103)
    at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:81)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.NestedArchiveIteratorDirect.getInputStream(NestedArchiveIteratorDirect.java:117)
    at com.ibm.wsspi.amm.scan.context.ArchiveInputStreamData.iterate(ArchiveInputStreamData.java:238)
    at com.ibm.ws.amm.AnnotativeMetadataManagerImpl.scan(AnnotativeMetadataManagerImpl.java:257)
    at com.ibm.ws.amm.AnnotativeMetadataManagerImpl.scan(AnnotativeMetadataManagerImpl.java:218)
    at com.ibm.ws.amm.commonarchive.AnnotationsProcessorImpl.merge(AnnotationsProcessorImpl.java:108)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.WARFileImpl.processAnnotations(WARFileImpl.java:297)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.WARFileImpl.getDeploymentDescriptor(WARFileImpl.java:243)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.WARFileImpl.getDeploymentDescriptor(WARFileImpl.java:173)
    at com.ibm.etools.commonarchive.impl.WARFileImpl.getExtensions(WARFileImpl.java:440)
    at com.ibm.etools.commonarchive.impl.WARFileImpl.getContextRoot(WARFileImpl.java:736)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.Ear50NoDDImportStrategyImpl.loadDeploymentDescriptor(Ear50NoDDImportStrategyImpl.java:388)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.Ear50NoDDImportStrategyImpl.importMetaData(Ear50NoDDImportStrategyImpl.java:253)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.EARFileImpl.getDeploymentDescriptor(EARFileImpl.java:377)
    at com.ibm.etools.commonarchive.impl.EARFileImpl.initializeModuleExtensions(EARFileImpl.java:641)
    at com.ibm.etools.commonarchive.impl.EARFileImpl.initializeAfterOpen(EARFileImpl.java:720)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.CommonarchiveFactoryImpl.openSpecificArchive(CommonarchiveFactoryImpl.java:1517)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.CommonarchiveFactoryImpl.openEARFile(CommonarchiveFactoryImpl.java:1205)
    at com.ibm.etools.commonarchive.impl.CommonarchiveFactoryImpl.openEARFile(CommonarchiveFactoryImpl.java:552)
    at com.ibm.ws.management.application.client.AppInstallHelper.getArchive(AppInstallHelper.java:271)
    at com.ibm.ws.management.application.client.AppInstallHelper.getEarFile(AppInstallHelper.java:157)
    at com.ibm.ws.webservices.admin.utils.CommonUtils.getMergeEar(CommonUtils.java:450)
    at com.ibm.ws.webservices.admin.deploy.VerifyEJBandItsRoutersTask.performTask(VerifyEJBandItsRoutersTask.java:127)
    at com.ibm.ws.management.application.SchedulerImpl.run(SchedulerImpl.java:284)
    at java.lang.Thread.run(Thread.java:735)

【问题讨论】:

  • 我们看不到您的代码——我们不知道projectList 是什么,因此无法提供帮助。我建议使用标准 Java 命名约定(例如,ProjNames 命名错误)和一致的缩进以使内容更易于阅读。
  • 如果您在与此问题相关的日志中有错误,那么您应该发布完整的堆栈跟踪。如果没有,就很难理解您的错误消息、错误消息发生的原因和位置。
  • projectList 是我在上面提到的 Bean 类型的数组列表......唯一发生的问题是在使用 Project 类型的迭代器时。我也在添加 StackTrace of Exception

标签: java struts2


【解决方案1】:

谢谢各位,这个问题现在已经解决了。这只是我的错误。我传递的项目列表是空的所以,迭代器在那里抛出异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2020-01-15
    相关资源
    最近更新 更多