Jsf 无法还原类型为org.primefaces.component.resetinput.ResetInputActionListener的状态持有者

Jsf 无法还原类型为org.primefaces.component.resetinput.ResetInputActionListener的状态持有者,jsf,primefaces,myfaces,Jsf,Primefaces,Myfaces,我在PrimeFaces应用程序中遇到了一个非常奇怪的错误,这是我以前从未见过的 无法还原类型为org.primefaces.component.resetinput.ResetInputActionListener(缺少任何参数构造函数?) 类org.primefaces.component.resetinput.ResetInputActionListener实际上没有参数构造函数,但这不是以前的问题。。。否则primefaces应用程序将无法运行 该错误的实际原因是什么?如何修复 我在we

我在PrimeFaces应用程序中遇到了一个非常奇怪的错误,这是我以前从未见过的

无法还原类型为
org.primefaces.component.resetinput.ResetInputActionListener
(缺少任何参数构造函数?)

org.primefaces.component.resetinput.ResetInputActionListener
实际上没有参数构造函数,但这不是以前的问题。。。否则primefaces应用程序将无法运行

该错误的实际原因是什么?如何修复

我在websphere7上使用PrimeFaces 3.5MyFaces 2.0.7

                                 javax.faces.FacesException: java.lang.RuntimeException: Could not restore StateHolder of type org.primefaces.component.resetinput.ResetInputActionListener (missing no-args constructor?)
    at org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241)
    at org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:156)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:191)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1663)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
    at de.datev.commons.web.filter.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:54)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
    at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
Caused by: java.lang.RuntimeException: Could not restore StateHolder of type org.primefaces.component.resetinput.ResetInputActionListener (missing no-args constructor?)
    at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1603)
    at javax.faces.component._DeltaList.restoreState(_DeltaList.java:251)
    at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1616)
    at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1730)
    at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1386)
    at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1429)
    at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1429)
    at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1429)
    at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1429)
    at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1429)
    at javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:736)
    at org.apache.myfaces.application.StateManagerImpl.restoreView(StateManagerImpl.java:129)
    at org.apache.myfaces.shared_impl.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:106)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:1464)
    at org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:279)
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:123)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171)
    ... 32 more
Caused by: java.lang.InstantiationException: org.primefaces.component.resetinput.ResetInputActionListener
    at java.lang.J9VMInternals.newInstanceImpl(Native Method)
    at java.lang.Class.newInstance(Class.java:1345)
    at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1599)
    ... 48 more

p:resetInput在Primefaces 3.5中有缺陷(从4.0中更正),它缺少无参数构造函数

改为使用,或定义一个自定义resetInput方法,该方法重用Primefaces代码并从您的操作中调用它:

public static void resetInputs(String targetIds) {
    ActionEvent event = new ActionEvent(Faces.getViewRoot());
    ResetInputActionListener reset = new ResetInputActionListener(Components.createValueExpression(targetIds, String.class));
    reset.processAction(event);
}

注意:覆盖ResetInputActionListener并添加缺少的构造函数不起作用,因为包含的组件未正确还原。

您能提供一个发生此问题的案例吗?这是一个非常复杂的视图,因此不知道为什么会发生类似的情况,我不知道在哪里搜索->提示修剪:)可能会帮助您解决此问题。修剪将有助于找到解决方法,但不是问题的原因,也无助于防止将来出现问题。从p:commandButton中删除p:resetInput会有所帮助。我忘了我用过它们,但当我写代码的时候,它就正常工作了。因此,SSCCE原则得出结论:不要使用Y的X特征,因为它有时不起作用。。。。