简体   繁体   English

更新资料 <h:inputTextArea> 字符串更改时的内容

[英]Update <h:inputTextArea> content when string changed

Ok, it's kind of a trivial question, but here it goes. 好的,这是一个琐碎的问题,但这是可行的。 I want to show the progress of various inserts/updates made on a database, using a <h:inputTextArea value="bean.status" disabled="true"/> in my view (using richfaces). 我想在我的视图中使用<h:inputTextArea value="bean.status" disabled="true"/> (使用richfaces)来显示对数据库进行的各种插入/更新的进度。 The Bean is a backing bean with a status attribute and a method to add status messages it: Bean是具有status属性和为其添加状态消息的方法的备用Bean:

public void addMessage(String message) {
    status = status.concat(message + "\n");
}

There is a "migrate" button that starts the process. 有一个“迁移”按钮开始该过程。 My problem is that the text area is update only at the end of the migrator method. 我的问题是,仅在migrator方法的末尾才更新文本区域。 What I need is that everytime the status is updated, the input text area gets updated too. 我需要的是,每当status更新时,输入文本区域也会被更新。 So... 所以...

1 - How to do it? 1-怎么做?

2 - Is there a better way to implement this? 2-是否有更好的方法来实现?


According to the RichFaces Component References it's needed: 根据RichFaces组件参考,需要:

  • Setup Push 设置推送

  • Use a server-side or client-side approach 使用服务器端或客户端方法

  • Implement a message producer 实施消息生产者

  • Handle push messages 处理推送消息

So I did: 所以我做了:

  • Install runtime dependencies (Atmosphere): -- Added atmosphere-runtime-1.0.0.beta4 dependency with Maven 安装运行时依赖项(Atmosphere):-通过Maven添加了air-runtime-1.0.0.beta4依赖项

  • Registering Push Servlet -- Not needed for Servlet 3.0, but added the manual configuration in web.xml: 注册Push Servlet-Servlet 3.0不需要,但是在web.xml中添加了手动配置:

    Push Servlet org.richfaces.webapp.PushServlet 1 true 推送Servlet org.richfaces.webapp.PushServlet 1 true

  • Chose server-side approach with Push CDI Event mechanism to fire messages. 选择具有Push CDI Event机制的服务器端方法来触发消息。 Updated my Status.java to be a message producer: 更新了我的Status.java使其成为消息生成器:

    import java.io.Serializable; 导入java.io.Serializable; import javax.enterprise.context.SessionScoped; 导入javax.enterprise.context.SessionScoped; import javax.enterprise.event.Event; 导入javax.enterprise.event.Event; import javax.inject.Inject; 导入javax.inject.Inject; import javax.inject.Named; 导入javax.inject.Named; import org.richfaces.cdi.push.Push; 导入org.richfaces.cdi.push.Push;

    @Named @SessionScoped public class Status implements Serializable { @Named @SessionScoped公共类Status实现Serializable {

     @Inject @Push(topic = "statusPush") Event<String> pushEvent; private String status; public void addMessage(String message) { //Everytime the status is updated... status = status.concat(message + "\\n"); //... the message is sent to the topic sendMessage(message); } public void sendMessage(String message) { pushEvent.fire(message); } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } 

    } }

  • Handling messages on the view: 在视图上处理消息:

     <a4j:push address="statusPush" onerror="alert(event.rf.data)"> <a4j:ajax event="dataavailable" render="statusOutput" /> </a4j:push> <h:inputTextarea id="statusOutput" value="#{status.status}" cols="80" rows="20" disabled="true"/> 

Seems that it's all set but when I click the button that starts the migration process, I get the following stacktrace: 似乎已经全部设置好了,但是当我单击启动迁移过程的按钮时,我得到了以下堆栈跟踪:

Warn: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception com.google.common.collect.ComputationException: javax.faces.FacesException: Lookup failed for '/ConnectionFactory' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:397) at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl.createTopic(JMSTopicsContextImpl.java:281) at org.richfaces.application.push.TopicsContext.getOrCreateTopic(TopicsContext.java:48) at org.richfaces.application.push.impl.SessionImpl.createSubscriptions(SessionImpl.java:190) at org.richfaces.application.push.impl.SessionImpl.subscribe(SessionImpl.java:185) at org.richfaces.resource.PushRes 警告:StandardWrapperValve [Faces Servlet]:PWC1406:Servlet Faces Servlet的Servlet.service()引发异常com.google.common.collect.ComputationException:javax.faces.FacesException:在SerialContext [myEnv = { java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,java.naming.factory。 com.google.common.collect.ComputingConcurrentHashMap $ ComputingMapAdapter.get(ComputingConcurrentHashMap.java:397)上的url.pkgs = com.sun.enterprise.naming},位于org.richfaces.application.push.impl.jms.JMSTopicsContextImpl.createTopic( org.richfaces.application.push.TopicsContext.getOrCreateTopic(TopicsContext.java:48)的JMSTopicsContextImpl.java:281)org.richfaces的org.richfaces.application.push.impl.SessionImpl.createSubscriptions(SessionImpl.java:190) org.richfaces.resource.PushRes上的.application.push.impl.SessionImpl.subscribe(SessionImpl.java:185) ource.encode(PushResource.java:88) at org.richfaces.resource.UserResourceWrapperImpl.encode(UserResourceWrapperImpl.java:188) at org.richfaces.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:229) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:591) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$A org.richfaces.resource.UserResourceWrapperImpl.encode(UserResourceWrapperImpl.java:188)处的ource.encode(PushResource.java:88)org.javax.faces.webapp处的org.richfaces.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:229)位于org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)的.FacesServlet.service(FacesServlet.java:591)位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)的org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)的org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)org.apache.catalina.core.StandardPipeline.invoke( org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)处的org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)处的org.apache.catalina的StandardPipeline.java:595)位于com.sun.enterprise.v3.services.impl.ContainerMapper $ A的.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) dapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) at com.sun.grizzly.comet.CometEngine.executeServlet(CometEngine.java:459) at com.sun.grizzly.comet.CometEngine.handle(CometEngine.java:316) at com.sun.grizzly.comet.CometAsyncFilter.doFilter(CometAsyncFilter.java:87) at com.sun.grizzly.arp.DefaultAsyncExecutor.invokeFilters(DefaultAsyncExecutor.java:171) at com.sun.grizzly.arp.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:143) at com.sun.grizzly.arp.AsyncProcessorTask.doTask(AsyncProcessorTask.java:102) at com.sun.grizzly.http.TaskBase.run(TaskBase.java:193) at com.sun.grizzly.http.TaskBase.execute(TaskBase.java:175) at com.sun.grizzly.arp.DefaultAsyncHandler.handle(DefaultAsyncHandler.java:145) at com.sun.grizzly.arp.AsyncProtocolFilter.execute(AsyncProtocolFilter.java:210) at com.sun.grizzly.DefaultProtocolChain.exe com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java :)上的dapterCallable.call(ContainerMapper.java:317)在com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 860),com.sun.grizzly.comet.CometEngine.executeServlet(CometEngine.java:459),com.sun.grizzly.comet.CometEngine.handle(CometEngine.java:316),com.sun.grizzly.comet.CometAsyncFilter com上com.sun.grizzly.arp.DefaultAsyncExecutor.invokeFilters(DefaultAsyncExecutor.java:171)的com.sun.grizzly.arp.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:143)的.doFilter(CometAsyncFilter.java:87)。 sun.grizzly.arp.AsyncProcessorTask.doTask(AsyncProcessorTask.java:102)位于com.sun.grizzly.http.TaskBase.run(TaskBase.java:193)位于com.sun.grizzly.http.TaskBase.execute(TaskBase。 com.sun.grizzly.arp.DefaultAsyncHandler.handle(DefaultAsyncHandler.java:145)的com.sun.grizzly.arp.AsyncProtocolFilter.execute(AsyncProtocolFilter.java:210)的com.sun.grizzly.DefaultProtocolChain的java:175) 。可执行程序 cuteProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722) Caused by: javax.faces.FacesException: Lookup failed for '/ConnectionFactory' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.namin com.sun.grizzly上的cuteProtocolFilter(DefaultProtocolChain.java:137)com.sun.grizzly上的DefaultProtocolChain.execute(DefaultProtocolChain.java:104)com.sun.grizzly.http上的com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) com.sun.grizzly.HttpProtocolChain.execute(HttpProtocolChain.java:79)在com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)在com.sun.grizzly.SelectionKeyContextTask.call(SelecttoKeyChainContextTask.java:54)。 com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)的com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool)的grizzly.ContextTask.run(ContextTask.java:71)。 java:513)at java.lang.Thread.run(Thread.java:722)原因:javax.faces.FacesException:在SerialContext中查找“ / ConnectionFactory”失败[myEnv = {java.naming.factory.initial = com .sun.enterprise.naming.impl.SerialInitContextFactory,java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,java.namin g.factory.url.pkgs=com.sun.enterprise.naming} at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl$1.apply(JMSTopicsContextImpl.java:207) at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl$1.apply(JMSTopicsContextImpl.java:195) at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:355) at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184) at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153) at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69) at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393) ... 39 more Caused by: javax.naming.NamingException: Lookup failed for '/ConnectionFactory' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterpri g.factory.url.pkgs = com.sun.enterprise.naming},网址为org.richfaces.application.push.impl.jms.JMSTopicsContextImpl $ 1.apply(JMSTopicsContextImpl.java:207),网址为org.richfaces.application.push.impl com.google.common.collect.ComputingConcurrentHashMap $ ComputingValueReference.compute(ComputingConcurrentHashMap.java:355)的.jms.JMSTopicsContextImpl $ 1.apply(JMSTopicsContextImpl.java:195),位于com.google.common.collect.ComputingConcurrentHashMap $ ComputingSegment.compute com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69)上com.google.common.collect.ComputingConcurrentHashMap $ ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153)上的ComputingConcurrentHashMap.java:184)。 .common.collect.ComputingConcurrentHashMap $ ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393)... 39更多原因:javax.naming.NamingException:在SerialContext [myEnv = {java.naming.factory。 initial = com.sun.enterpri se.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: ] at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:654) at javax.naming.InitialContext.lookup(InitialContext.java:415) at javax.naming.InitialContext.lookup(InitialContext.java:415) at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl$JMSTopicContext.createConnection(JMSTopicsContextImpl.java:98) at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl$JMSTopicContext.start(JMSTopicsContextImpl.java:123) at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl$1.apply(JMSTopicsContextImpl.java:199) ... 45 more Caused by: javax.naming.NameNotFoundE se.naming.impl.SerialInitContextFactory,java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,java.naming.factory.url.pkgs = com.sun.enterprise.naming} [根异常是com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)处的com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java处的javax.naming.NameNotFoundException:] :455)在com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:654)在javax.naming.InitialContext.lookup(InitialContext.java:415)在javax.naming.InitialContext.lookup(InitialContext。 Java的:415)在org.richfaces.application.push.impl.jms.JMSTopicsContextImpl $ JMSTopicContext.createConnection(JMSTopicsContextImpl.java:98)在org.richfaces.application.push.impl.jms.JMSTopicsContextImpl $ JMSTopicContext.start(JMSTopicsContextImpl。 java:123)at org.richfaces.application.push.impl.jms.JMSTopicsContextImpl $ 1.apply(JMSTopicsContextImpl.java:199)... 45更多原因:javax.naming.NameNotFoundE xception: at com.sun.enterprise.naming.impl.TransientContext.resolveContext(TransientContext.java:310) at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:218) at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77) at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:505) ... 52 more Xception:在com.sun.enterprise.naming.impl.TransientContext.resolveContext(TransientContext.java:310)在com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:218)在com.sun.enterprise com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119)上的.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)com.sun.enterprise.naming.impl.SerialContext.lookup (SerialContext.java:505)...还有52个

Bottom line: JMS (I think) can't find the statusPush topic. 底线:JMS(我认为)找不到statusPush主题。

update: had JMS enabled in web.xml, changed to 更新:在web.xml中启用了JMS,更改为

<context-param>
    <param-name>org.richfaces.push.jms.enable</param-name>
    <param-value>true</param-value>
</context-param>

and now stacktrace is: 现在stacktrace是:

Warn: StandardWrapperValve[AutoRegisteredPushServlet]: PWC1406: Servlet.service() for servlet AutoRegisteredPushServlet threw exception java.lang.RuntimeException: java.lang.NullPointerException at org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:171) at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:248) at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:166) at org.atmosphere.container.GrizzlyCometSupport.service(GrizzlyCometSupport.java:119) at org.atmosphere.container.GlassFishWebSocketSupport.service(GlassFishWebSocketSupport.java:110) at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1257) at org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:293) at org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:279) at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) at javax.servlet.http.HttpServlet.service(HttpServlet 警告:StandardWrapperValve [AutoRegisteredPushServlet]:PWC1406:Servlet的Servlet.service()抛出异常java.lang.RuntimeException:org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:171)处的java.lang.NullPointerException。 org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:166)位于org.atmosphere.container.GrizzlyCometSupport.service(GrizzlyCometSupport.java:119)处的privacy.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:248) org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1257)的.atmosphere.container.GlassFishWebSocketSupport.java(110)at org.atmosphere.cpr.AtmosphereServlet.doPost(AtmosphereServlet.java:293) org.atmosphere.cpr.AtmosphereServlet.doGet(AtmosphereServlet.java:279)在javax.servlet.http.HttpServlet.service(HttpServlet.java:668)在javax.servlet.http.HttpServlet.service(HttpServlet) .java:770) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) at com.sun.grizzly.comet.CometEngine.executeServlet(CometEngine.java .java:770),位于org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550),位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281),位于org.apache.catalina。 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)处的core.StandardContextValve.invoke(StandardContextValve.java:175)在org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)在org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)在org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:231)在com.sun.enterprise.v3.services.impl.ContainerMapper $ AdapterCallable.call(ContainerMapper.java:317)在com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper .java:195)com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)com.sun.grizzly.comet.CometEngine.executeServlet(CometEngine.java) :459) at com.sun.grizzly.comet.CometEngine.handle(CometEngine.java:316) at com.sun.grizzly.comet.CometAsyncFilter.doFilter(CometAsyncFilter.java:87) at com.sun.grizzly.arp.DefaultAsyncExecutor.invokeFilters(DefaultAsyncExecutor.java:171) at com.sun.grizzly.arp.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:143) at com.sun.grizzly.arp.AsyncProcessorTask.doTask(AsyncProcessorTask.java:102) at com.sun.grizzly.http.TaskBase.run(TaskBase.java:193) at com.sun.grizzly.http.TaskBase.execute(TaskBase.java:175) at com.sun.grizzly.arp.DefaultAsyncHandler.handle(DefaultAsyncHandler.java:145) at com.sun.grizzly.arp.AsyncProtocolFilter.execute(AsyncProtocolFilter.java:210) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java :459),位于com.sun.grizzly.comet.CometEngine.handle(CometEngine.java:316)。com.sun.grizzly.comp.CometAsyncFilter.doFilter(CometAsyncFilter.java:87)。 com.sun.grizzly.arp.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:143)的com.sun.grizzly.arp.AsyncProcessorTask.doTask(AsyncProcessorTask.java:102)的DefaultAsyncExecutor.invokeFilters(DefaultAsyncExecutor.java:171) .com.sun.grizzly.http.TaskBase.execute(TaskBase.java:175)上的.sun.grizzly.http.TaskBase.run(com.sun.grizzly.arp.DefaultAsyncHandler.handle(DefaultAsyncHandler) .java:145)com.sun.grizzly.arp.AsyncProtocolFilter.execute(AsyncProtocolFilter.java:210)com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)com.sun.grizzly.DefaultProtocolChain。在com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)在com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java)上执行(DefaultProtocolChain.java:104) :79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722) Caused by: java.lang.NullPointerException at org.richfaces.webapp.PushHandlerFilter.doFilter(PushHandlerFilter.java:90) at org.atmosphere.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.java:154) at org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131) at org.atmosphere.handler.ReflectorServletProcessor$FilterChainServletWrapper.service(ReflectorServletProcessor.java:310) at org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168) ... 40 more :79)在com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)在com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)在com.sun.grizzly.ContextTask.run(ContextTask。 com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:532)的com.sun.grizzly.util.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:513)的Java:71) .Thread.run(Thread.java:722)由以下原因引起:org.richfaces.webapp.PushHandlerFilter.doFilter(PushHandlerFilter.java:90)处的org.atface.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.java处的java.lang.NullPointerException :154),位于org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)的org.atmosphere.handler.ReflectorServletProcessor $ FilterChainServletWrapper.service(AtmosphereFilterChain.java:131)的org.atmosphere.handler.ReflectorServletProcessor.onRequest( ReflectorServletProcessor.java:168)...还有40个

You have to periodically call the server and update your textarea. 您必须定期呼叫服务器并更新您的文本区域。 This can be achieved using a4j:poll component, that periodically fires ajax requests and updates specific fields on the form. 这可以使用a4j:poll组件来实现,该组件会定期触发ajax请求并更新表单上的特定字段。 An example could be found here . 一个例子可以在这里找到。

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

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