2011-04-26 27 views
1

所以,我有2個持有人使用CustomLayout。Vaadin,CustomLayout循環和IndexOutOfBound

PersonH​​older:

<div class='persons_holder' location='persons_list'></div> 

PersonsHolder:

<div class='single_person_holder'> 
<div class='person_action' location='person_action'></div> 
<div class='person_data'> 
    <div class='person_name' location='person_name'></div> 
    <div class='person_shares' location='person_shares'></div> 
</div> 
</div> 

現在,我想用一些對(;;)指令使用它。簡而言之:

CustomLayout personsHolderLayout = new CustomLayout(PERSONSHOLDER); 
Panel tmpPanelPersons = new Panel(); 
for (PersonView personView : personViews) { 
    Component compToAdd2 = magicWithData(2); 
    Component compToAdd3 = magicWithData(3); 
    CustomLayout singlePersonHolderLayout = new CustomLayout(SINGLEPERSONHOLDER); 
    singlePersonHolderLayout.addComponent(compToAdd2, "person_action"); 
    singlePersonHolderLayout.addComponent(compToAdd3, "person_name"); 

    Panel tmpPanelPerson = new Panel(); 
    for (SingleEntryView chng : ((PersonWithSharesView) personView.getEntries()) { 
    Component comp2add = magicWithAnotherData(1); 
    tmpPanelShares.addComponent(comp2add); 
    singlePersonHolderLayout.addComponent(tmpPanelShares, "person_shares"); 
    } 

    tmpPanelPersons.addComponent(singlePersonHolderLayout); 
} 
personsHolderLayout.addComponent(tmpPanelPersons, "persons_list"); 

經過一個循環,就完成了。我有indexOutOfBound在:

CustomLayout singlePersonHolderLayout = new CustomLayout(SINGLEPERSONHOLDER); 

有人能告訴我我做錯了什麼嗎? 我是Vaadin的新人:)所以請溫柔一點。

感謝回報 盧卡斯

這裏的打印堆棧跟蹤:

16:10:06,705 ERROR http-8880-exec-4 ui.SpgApp$1:15 - class com.vaadin.terminal.gwt.server.ChangeVariablesErrorEvent com.vaadin.terminal.gwt.server[email protected] 
java.lang.ArrayIndexOutOfBoundsException 
    at java.lang.System.arraycopy(Native Method) 
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:516) 
    at java.lang.StringBuilder.append(StringBuilder.java:189) 
    at com.vaadin.ui.CustomLayout.initTemplateContentsFromInputStream(CustomLayout.java:119) 
    at com.vaadin.ui.CustomLayout.<init>(CustomLayout.java:96) 
    at ln.spg.ui.metrics.MetricsDataPanel.appendPeopleViews(MetricsDataPanel.java:700) 
    at ln.spg.ui.metrics.MetricsDataPanel.addPeopleComponentToForm(MetricsDataPanel.java:850) 
    at ln.spg.ui.metrics.MetricsDataPanel.render(MetricsDataPanel.java:391) 
    at ln.spg.ui.metrics.MetricsNewPanel$1.action(MetricsNewPanel.java:150) 
    at ln.spg.ui.components.TimeAxis.changeVariables(TimeAxis.java:95) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1297) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1217) 
    at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:733) 
    at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:296) 
    at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:483) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:366) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) 
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) 
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) 
    at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:109) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:167) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:619) 

回答

0

的問題是從ByteArrayInputStream進行讀取。請記住不要做這樣的東西,如讀取這個輸入,並將其保存在變量中...

它不這樣工作...