首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring和PrettyFaces: PrettyFaces未加载

Spring和PrettyFaces: PrettyFaces未加载
EN

Stack Overflow用户
提问于 2014-12-15 23:07:39
回答 1查看 2.1K关注 0票数 4

摘要:当我打开Spring应用程序时。(运行在嵌入式Tomcat 8服务器上)我从未收到以下消息:

代码语言:javascript
复制
INFO  [org.ocpsoft.rewrite.servlet.RewriteFilter] RewriteFilter starting up...
...
INFO  [org.ocpsoft.rewrite.servlet.RewriteFilter] Loaded [] org.ocpsoft.rewrite.config.ConfigurationProvider [org.ocpsoft.rewrite.prettyfaces.PrettyFacesRewriteConfigurationProvider<1>]
INFO  [org.ocpsoft.rewrite.servlet.RewriteFilter] RewriteFilter initialized.

日志通知。由于某种原因,PrettyFaces没有启动,我也不知道为什么。

技术:SpringBoot1.2.0.RELEASE,Java 8,Maven,用于依赖性管理。嵌入式Tomcat 8.0.15服务器

尽可能多地关注Java配置。以前我尝试使用重写,但它给了我同样数量的粗暴。感觉好像我错过了一些显而易见的东西。

这里有一个指向我当前代码库的链接。(它很小,只是在一个新项目的基础上工作,还没有大的实现。)

https://github.com/MeisterGit/FoundationServer

Maven依赖关系:

代码语言:javascript
复制
<dependency>
    <groupId>com.ocpsoft</groupId>
    <artifactId>prettyfaces-jsf2</artifactId>
    <version>3.3.3</version>
</dependency>`

其他Maven依赖关系尝试:

代码语言:javascript
复制
<!-- PrettyFaces -->
<dependency>
    <groupId>org.ocpsoft.rewrite</groupId>
    <artifactId>rewrite-servlet</artifactId>
    <version>2.0.12.Final</version>
</dependency>
<dependency>
    <groupId>org.ocpsoft.rewrite</groupId>
    <artifactId>rewrite-config-prettyfaces</artifactId>
    <version>2.0.12.Final</version>
</dependency>

这两个版本产生相同的结果。没有启动消息。

我试图将XML保持在最低限度。我将faces-config设置为:

代码语言:javascript
复制
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"             
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
        http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
        version="2.2">

    <!-- Allow Spring Beans to be accessible to JSF. -->
    <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>
</faces-config>`

我的控制器顶部是:

代码语言:javascript
复制
@Controller
@URLMapping(id = UserController.INDEX,
        pattern = "/",
        viewId = "/content/index.xhtml") // Home page.`

这是我的web.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="foundation-server"
    version="3.1">

<!-- PrettyFaces: Specify which package to scan for @UrlMapping annotations --> 
<context-param>
   <param-name>com.ocpsoft.pretty.BASE_PACKAGES</param-name>
   <param-value>foundation</param-value>
</context-param>

<!--  No Pretty Filter required, servlet 3.0+ automatically registers the filter. -->
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

我做错了什么有什么帮助吗?服务器打开,我可以很好地点击http://localhost:8080/content/index.xhtml,然后加载JSF模板。春豆支持它。。。但是没有URL映射起作用。如果我点击http://localhost:8080/,我只会得到一个错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 09:27:19

当您在嵌入式容器中使用Spring时,web.xmlweb-fragment.xml将被忽略。您需要在应用程序的PrettyFaces配置中注册过滤器:

代码语言:javascript
复制
@Bean
public FilterRegistrationBean prettyFilter() {
    FilterRegistrationBean prettyFilter = new FilterRegistrationBean(new PrettyFilter());
    prettyFilter.setDispatcherTypes(DispatcherType.FORWARD, DispatcherType.REQUEST,
            DispatcherType.ASYNC, DispatcherType.ERROR);
    prettyFilter.addUrlPatterns("/*");
    return prettyFilter;
}

如果PrettyFaces在类路径上,那么Spring可以自动为您配置这个过滤器。如果你想看到这样的增强,请公开问题

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27494792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档