首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PrettyFaces不适用于Struts2

PrettyFaces不适用于Struts2
EN

Stack Overflow用户
提问于 2015-04-22 23:56:09
回答 1查看 91关注 0票数 1

我想让我的网址更好的搜索引擎优化。

我配置了过滤器,它与以下内容一起工作,例如:

代码语言:javascript
复制
<url-mapping>
    <pattern value="/index" />
    <view-id value="/index.html" />
</url-mapping>

但是,当我将view-id设置为某个Struts URL时,它不起作用。

例如:

代码语言:javascript
复制
<url-mapping>
    <pattern value="/index" />
    <view-id value="/application/PunchIt.do" />
</url-mapping>

它不能找到(或不能执行) Struts操作。

有没有什么解决方案可以和Struts2框架一起配置PrettyFaces?

我使用的是漂亮脸蛋3.3.3。

下面是pretty-config.xml的配置:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<pretty-config xmlns="http://ocpsoft.org/prettyfaces/3.3.3" 
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xsi:schemaLocation="http://ocpsoft.org/prettyfaces/
               http://ocpsoft.org/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.3.xsd">

    <!-- doesn't work -->
    <url-mapping>
        <pattern value="/index.html" />
        <view-id value="/application/PunchIt.do" />
    </url-mapping>

    <!-- works -->
    <url-mapping>
        <pattern value="/error" />
        <view-id value="/error.html" />
    </url-mapping>
 </pretty-config>

下面是web.xml:

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

  <display-name>Struts Blank</display-name>

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

  <filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
  </filter>

  <filter-mapping> 
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/* </url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>ERROR</dispatcher>
  </filter-mapping>

</web-app>
EN

回答 1

Stack Overflow用户

发布于 2015-04-23 15:37:21

您必须确保PrettyFilter位于Struts2筛选器之前,并且Struts2筛选器配置为处理转发调度程序类型。所以试着这样做:

代码语言:javascript
复制
<filter>
  <filter-name>Pretty Filter</filter-name>
  <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping> 
  <filter-name>Pretty Filter</filter-name>
  <url-pattern>/*</url-pattern> 
  <dispatcher>FORWARD</dispatcher> 
  <dispatcher>REQUEST</dispatcher> 
  <dispatcher>ERROR</dispatcher>
</filter-mapping>

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>FORWARD</dispatcher> 
  <dispatcher>REQUEST</dispatcher> 
</filter-mapping>

有关详细解释,请参阅此处的问题#2:

http://www.ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/FAQ.html

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

https://stackoverflow.com/questions/29802878

复制
相关文章

相似问题

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