Spring Boot + Primefaces - исключение «Нераспознанный тип контента» - PullRequest
0 голосов
/ 01 июня 2018

У меня есть базовая настройка с использованием весенней загрузки и joinfaces для использования в моем приложении простых и загрузочных поверхностей.

Использование, например, компонентов bootsfaces и выполнение вызовов ajax работает как чудо.Когда я добавляю простой компонент primefaces, который использует ajax, вызов завершается неудачно, и я получаю следующее исключение:

    2018-06-01 11:49:22.479 ERROR 11868 --- [nio-8080-exec-2] j.e.r.webcontainer.jsf.application       : Error Rendering View[/datatest-prime.xhtml]

java.lang.IllegalArgumentException: Unrecognized Content Type.
    at com.sun.faces.renderkit.RenderKitImpl.createResponseWriter(RenderKitImpl.java:283) ~[javax.faces-2.3.4.jar:2.3.4]
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.createResponseWriter(FaceletViewHandlingStrategy.java:1160) ~[javax.faces-2.3.4.jar:2.3.4]
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:438) ~[javax.faces-2.3.4.jar:2.3.4]
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:194) [javax.faces-2.3.4.jar:2.3.4]
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:151) [javax.faces-2.3.4.jar:2.3.4]
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:126) [javax.faces-2.3.4.jar:2.3.4]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) [javax.faces-2.3.4.jar:2.3.4]
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223) [javax.faces-2.3.4.jar:2.3.4]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:671) [javax.faces-2.3.4.jar:2.3.4]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-embed-websocket-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) [spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) [spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_162]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_162]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.28.jar:8.5.28]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_162]

Не имеет значения, если я просто использую кнопку, как в этом примере:

<h:form>
   <p:commandButton value="Add" ajax="true" actionListener="#{pingResultBean.onAction}" />
</h:form>

или с использованием любого другого компонента primefaces, который запускает вызовы ajax.

У меня включена защита Spring и используется следующая конфигурация:

http
        .authorizeRequests()
            .antMatchers("/login*").permitAll()
            .antMatchers("/logout*").permitAll()
            .antMatchers("/js/**").permitAll()
            .antMatchers("/css/**").permitAll()
            .antMatchers("/javax.faces.resource/**").permitAll()
            .anyRequest().authenticated()
        .and()
            .formLogin()
            .loginPage("/login.xhtml")
            .defaultSuccessUrl("/index.xhtml")
            .failureUrl("/login.xhtml?error=1")
        .and()
            .csrf().disable()
            .logout().logoutSuccessUrl("/login.xhtml?logout");

Все остальные вызовы ajax работают.Было бы неплохо, если бы кто-нибудь мог мне помочь.

Отредактировано: та же ошибка, когда я отключаю пружинную защиту.

Ошибка может легко быть воспроизведена при клонировании официального соединения joinfaces starter https://github.com/joinfaces/joinfaces-gradle-jar-example

и добавьте кнопку простых лиц

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

У меня была похожая проблема при переносе существующего простого приложения 6.2 с веб-приложением в wildfly 14. Мое решение - добавить process = "@ this" для всех p: menuitem

0 голосов
/ 14 ноября 2018

Именно то, что сказал Том Бомбадил!Если у вас есть @this в свойстве prossess, оно будет работать!В моем случае, так как я загружаю меню из базы данных, используя DefaultMenuModel, у меня есть это:

DefaultMenuItem mi = new DefaultMenuItem();
mi.setValue(m.getDescription());
mi.setProcess("@this"); //IMPORTANT SINCE WILDFLY 14 - Unrecognized Content Type?!
mi.setIcon("id-icon-param");
if (m.isExecutecommand()) {
  mi.setCommand(m.getCommandinstruction());
} else if (m.isLoadasdialog()) {
  mi.setUrl(m.getViewId());
} 
mi.setUpdate("@form");
submenu.addElement(mi);

Надеюсь, это поможет!

Иновариум

0 голосов
/ 04 июля 2018

У меня такая же настройка и та же проблема.Это было вызвано тегом f:view в моем основном шаблоне.

<f:view contentType="text/html">

Устранение проблемы устранило проблему.

...