I have a Spring Boot application using JSF/CDI. Backing beans are annotated with @Named @ViewScoped, but while browsing between other pages values still stay on textboxes. Values should've been cleared. In other words, the backing beans unexpectedly behave like @SessionScoped or @ApplicationScoped.
My input
<p:inputText value="#{parameterBean.spreadValue}" label=" "
styleClass="inputText" id="spreadValue">
<p:ajax event="change" />
<p:ajax event="valueChange" />
</p:inputText>
My bean
@Named("parameterBean")
@ViewScoped
public class parameterBean implements Serializable {
// ...
}
This is JSF configuration
@Configuration
public class JSFConfig {
@Bean
ServletRegistrationBean<FacesServlet> jsfServletRegistration(ServletContext servletContext) {
servletContext.setInitParameter("com.sun.faces.forceLoadConfiguration", Boolean.TRUE.toString());
// FacesServlet registration
ServletRegistrationBean<FacesServlet> srb = new ServletRegistrationBean<>();
srb.setServlet(new FacesServlet());
srb.setUrlMappings(Arrays.asList("*.xhtml"));
srb.setLoadOnStartup(1);
return srb;
}
}
ViewScoped doesn't work for Spring Boot and JSF. Had to implement custom ViewScope using BeanFactoryPostProcessor Interface.