Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要将作用域添加到支持bean的父类中,否则会引发异常javax.faces.application.ViewExpiredException_Java_Spring_Jsf_Primefaces_Scope - Fatal编程技术网

需要将作用域添加到支持bean的父类中,否则会引发异常javax.faces.application.ViewExpiredException

需要将作用域添加到支持bean的父类中,否则会引发异常javax.faces.application.ViewExpiredException,java,spring,jsf,primefaces,scope,Java,Spring,Jsf,Primefaces,Scope,我最近的任务是将现有的应用程序(使用MyFaces2和PrimeFaces5)从Tomcat(JDK1.7)迁移到JBoss(OpenJDK1.8)。最终,该应用程序能够启动,我设法进入登录页面并成功登录 登录后,将调用SidebarBacking类。这个SidebarBack类扩展了一个AbstractBean类(没有定义作用域),并为菜单注入了一个AppContextBean package com.myapp.pkg1.web.mbean.common; @ManagedBean @Se

我最近的任务是将现有的应用程序(使用MyFaces2和PrimeFaces5)从Tomcat(JDK1.7)迁移到JBoss(OpenJDK1.8)。最终,该应用程序能够启动,我设法进入登录页面并成功登录

登录后,将调用SidebarBacking类。这个SidebarBack类扩展了一个AbstractBean类(没有定义作用域),并为菜单注入了一个AppContextBean

package com.myapp.pkg1.web.mbean.common;

@ManagedBean
@SessionScoped
public class SidebarBacking extends AbstractBean
{
    ....

    @ManagedProperty(value="#{appcontextbean}")
    AppContextBean appContextBean;

    public void setAppContextBean(AppContextBean appContextBean) {
        this.appContextBean = appContextBean;
    }

    public AppContextBean getAppContextBean() {
        return appContextBean;
    }

    @PostConstruct
    public void init()
    {
        MenuParser.getInstance().setParentStyle("ui-state-default");
        MenuParser.getInstance().setChildStyle("ui-sidebar-menuitem-child");
        root = MenuParser.getInstance().generateMenuTree(authorities(), getAppContextBean().getMenu(),true);
    }

    ....
}
成功登录后,我可以看到侧菜单和主页,以及从数据库检索到的所有数据表。 问题是当我点击任何一个菜单链接时,它会抛出以下异常

940 SEVERE [org.omnifaces.exceptionhandler.FullAjaxExceptionHandler] (default task-1) FullAjaxExceptionHandler: An exception occurred during processing JSF ajax request. Error page '/faces/pages/common/login.xhtml' will be shown.: javax.faces.application.ViewExpiredException: /pages/inbox/myInbox.xhtmlNo saved view state could be found for the view identifier: /pages/inbox/myInbox.xhtml
        at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:132)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
        at com.myapp.pkg2.web.cache.NoCacheFilter.doFilter(NoCacheFilter.java:40)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at com.myapp.pkg2.web.logging.LogFilter.doFilter(LogFilter.java:33)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:64)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.opentracing.contrib.jaxrs2.server.SpanFinishingFilter.doFilter(SpanFinishingFilter.java:55)
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
        at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
        at java.lang.Thread.run(Thread.java:748)
我了解到,这表明当您访问页面时,作用域已经过期。 如果我向AbstractBean类添加一个作用域,我就能够解决这个异常,但是这将导致一个问题

无论何时更新任何数据,尽管数据库已成功更新,但整个网站上的数据仍不会刷新为其最新信息。第一次检索数据时,数据保持在最后一种状态。只有当我注销并再次登录时,才会反映新数据

package com.myapp.pkg2.web.mbean;

@ManagedBean(name = "abstractBean")
@SessionScoped
public class AbstractBean implements Serializable
{
    ....
我还尝试过为p:commandButton使用一些变体,但没有成功

<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" update="@all" />
<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" update="@form" />
<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" update="dataTable" />
<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" update=":form:dataTable" />
<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" process="@all" update="dataTable" />


问题似乎是由于所有支持bean(例如MyInboxBacking)扩展了AbstractBean类时添加到AbstractBean中的作用域造成的。因此,即使它们有自己的作用域(例如@RequestScope、@ViewScope),它们也不会因父类的作用域而生效


因此,我如何从AbstractBean中删除作用域而不导致声明的异常,或者即使使用@Sessionscoped,是否有任何方法可以刷新数据?

为什么
SidebarBacking
中的getter和setter有不同的名称?为什么在
SidebarBacking
中“注入”AppContextBean,即使它已经注入基类?为什么不使用
命名
注入
(CDI)?我认为,您应该删除基类中的
ManagedProperty
,因为基类没有作用域。您好,很抱歉,这两个都是打字错误,我已经更正了!在Sidebacking中应该只有managedproperty,而在基类AbstractBean中不应该有managedproperty。代码在提供给我时已经在使用managedbean,因此我没有使用named和inject。
994 SEVERE [org.omnifaces.exceptionhandler.FullAjaxExceptionHandler] (default task-1) FullAjaxExceptionHandler: An exception occurred during rendering JSF ajax response. Error page '/faces/pages/common/errorPage.xhtml' will be shown.: java.lang.IllegalStateException: Must be called before the start element is closed (attribute 'autocomplete')
    ....
package com.myapp.pkg2.web.mbean;

@ManagedBean(name = "abstractBean")
@SessionScoped
public class AbstractBean implements Serializable
{
    ....
<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" update="@all" />
<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" update="@form" />
<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" update="dataTable" />
<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" update=":form:dataTable" />
<p:commandButton id="btnAssign" value="Assign" action="#{myInbox.assignWork}" process="@all" update="dataTable" />