【发布时间】: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