簡體   English   中英

結束對話作用域bean,然后在單擊命令按鈕時重定向

[英]ending conversation scoped bean and then redirect when command button clicked

我有一個簡單的命令按鈕

<h:commandButton value="Create Form Event" action="#{formEventController.createFormEvent}"/>

它調用以下簡單的動作監聽器

@Named
@ConversationScoped
public class FormEventController implements Serializable
{
    @Inject
    private Conversation conversation;

    ...

    public String createFormEvent()
    {
        conversation.end();
        return "events?id=" + form.getId() + "&faces-redirect=true";
    }
}

所以基本上我想要一個按鈕,當單擊該按鈕時,它將結束對話,然后重定向到新頁面...

這一次有效,然后每次我在日志中看到以下內容時。.(從用戶的角度來看,一切都正常工作..單擊按鈕時,重定向正常工作)

嚴重:java.util.HashMap $ HashIterator.nextEntry(HashMap.java:793)處的java.util.ConcurrentModificationException在java.util.HashMap $ EntryIterator處的java.util.HashMap $ EntryIterator.next(HashMap.java:834)處。 org.jboss.weld.context.AbstractConversationContext.deactivate(AbstractConversationContext.java:250)下的org.jboss.weld.jsf.WeldPhaseListener.deactivateConversations(WeldPhaseListener.java:131)上的next(HashMap.java:832) .weld.jsf.WeldPhaseListener.afterPhase(WeldPhaseListener.java:96)位於com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:189)位於com.sun.faces.lifecycle.Phase.doPhase(Phase.java :107),位於org.apache.catalina.core.StandardWrapper的com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118),位於javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)。 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)的服務(StandardWrapper.java:1534)在org.apache.catalina.core.ApplicationFilterChain.doFilt處 er(ApplicationFilterChain.java:215)在net.balusc.http.multipart.MultipartFilter.doFilter(MultipartFilter.java:78)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)在org.apache org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)的.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java :175),位於org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595),位於org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655),位於com.sun.enterprise.web。 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)上com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)上的WebPipeline.invoke(WebPipeline.java:98) org.apache.catalin上的.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) a.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)位於com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)位於com.sun.grizzly.http.ProcessorTask.invokeAdapter( com.sun.grizzly的ProcessorTask.java:822)。com.sun.grizzly的http.ProcessorTask.doProcess(ProcessorTask.java:719)。com.sun.grizzly的http.ProcessorTask.process(ProcessorTask.java:1013) com.sun.grizzly上的.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)在com.sun.grizzly上的DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137).com上的DefaultProtocolChain.execute(DefaultProtocolChain.java:104)。 sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)位於com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)位於com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)處com.sun.grizzly.ContextTask.run(ContextTask.java:71) 在com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:513)在com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)在java.lang.Thread.run (線程.java:662)

嚴重:WebModule [] PWC1322:調用ServletRequestListener org.jboss.weld.servlet.WeldListener上的requestDestroyed方法出錯java.lang.IllegalStateException:上下文在org.jboss.weld.context.AbstractConversationContext.deactivate(AbstractConversationContext.java:263不活躍)在org.apache.catalina.core.StandardContext.fireRequestDestroyedEvent(StandardContext.java:4588)在org.apache.catalina.core.StandardHostValve的org.jboss.weld.servlet.WeldListener.requestDestroyed(WeldListener.java:125)處。 com.sun的org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:328)的postInvoke(StandardHostValve.java:243)org.org的org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)的postInvoke(StandardHostValve.java:243) com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)的com.sun.grizzly.http.ProcessorTask.doProcess的.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) (ProcessorTask.java:719)位於com.sun.grizzly.http.ProcessorTask.process(Processor Task.java:1013)位於com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)位於com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)位於com.sun.grizzly.DefaultProtocolChain com.sun.grizzly的.execute(DefaultProtocolChain.java:104)。com.sun.grizzly的DefaultProtocolChain.execute(DefaultProtocolChain.java:90).com.sun的com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)。 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)位於com.sun.grizzly.ContextTask.run(ContextTask.java:71)處的grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:513)上的.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)在java.lang.Thread.run(Thread.java :662)

最新版本的焊接已解決了該問題,請參閱相關的錯誤報告

https://issues.jboss.org/browse/WELD-833

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM