漂亮的脸蛋不起作用
pretty faces does not work
我用我的 jsf 尝试了漂亮的脸 app.URL 没有 changed.I 遵循网站上提到的步骤。
pom.xml
<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>
我在 WEB-INF/
中添加了 pretty-config.xml
漂亮-config.xml
<pretty-config xmlns="http://ocpsoft.org/schema/rewrite-config-prettyfaces"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.org/schema/rewrite-config-prettyfaces
http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd">
<url-mapping id="login">
<pattern value="/login" />
<view-id value="/pages/unsecure/login.jsf" />
</url-mapping>
</pretty-config>
我的本地项目url(完整url)
我用的是myfaces2.2.7,spring/security,hibernate,tomcat7
我还需要做其他设置吗?我missing.I不明白。
我到底应该怎么做?提前致谢..
更新:
我没有得到任何 error.just 不起作用。 URL 不变..
浏览器中的 URL 不会自动更改。 PrettyFaces 将漂亮的 URL 映射到内部 URL。所以如果你要求:
http://localhost:9080/projectName/login
您实际上会看到配置中指定的 /pages/unsecure/login.jsf
页面。使用 JSF 导航或内部重定向到此页面的导航将自动使用漂亮的 URL.
如果你想自动从内部 URL 重定向到来自外部请求的漂亮 URL (就像你的例子一样),那么你需要添加一个重写条件来做到这一点:
<pretty-config xmlns="http://ocpsoft.org/schema/rewrite-config-prettyfaces"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.org/schema/rewrite-config-prettyfaces
http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd">
<url-mapping id="login">
<pattern value="/login" />
<view-id value="/pages/unsecure/login.jsf" />
</url-mapping>
<rewrite match="/pages/unsecure/login.jsf" substitute="/login" redirect="301"/>
</pretty-config>
或者,您可以将 Rewrite 直接用于 both 这些规则(因为您已经在使用带有 PrettyFaces 扩展的 Rewrite),使用 Join
规则:
@RewriteConfiguration
public class ExampleConfigurationProvider extends HttpConfigurationProvider
{
@Override
public int priority()
{
return 10;
}
@Override
public Configuration getConfiguration(final ServletContext context)
{
return ConfigurationBuilder.begin()
.addRule(Join.path("/login").to("/pages/unsecure/login.jsf").withInboundCorrection());
}
}
注意 .withInboundCorrection()
方法调用。这会自动设置从旧 url 到新 url 的入站重定向。
希望对您有所帮助。干杯!
我用我的 jsf 尝试了漂亮的脸 app.URL 没有 changed.I 遵循网站上提到的步骤。
pom.xml
<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>
我在 WEB-INF/
中添加了 pretty-config.xml
漂亮-config.xml
<pretty-config xmlns="http://ocpsoft.org/schema/rewrite-config-prettyfaces"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.org/schema/rewrite-config-prettyfaces
http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd">
<url-mapping id="login">
<pattern value="/login" />
<view-id value="/pages/unsecure/login.jsf" />
</url-mapping>
</pretty-config>
我的本地项目url(完整url)
我用的是myfaces2.2.7,spring/security,hibernate,tomcat7
我还需要做其他设置吗?我missing.I不明白。
我到底应该怎么做?提前致谢..
更新:
我没有得到任何 error.just 不起作用。 URL 不变..
浏览器中的 URL 不会自动更改。 PrettyFaces 将漂亮的 URL 映射到内部 URL。所以如果你要求:
http://localhost:9080/projectName/login
您实际上会看到配置中指定的 /pages/unsecure/login.jsf
页面。使用 JSF 导航或内部重定向到此页面的导航将自动使用漂亮的 URL.
如果你想自动从内部 URL 重定向到来自外部请求的漂亮 URL (就像你的例子一样),那么你需要添加一个重写条件来做到这一点:
<pretty-config xmlns="http://ocpsoft.org/schema/rewrite-config-prettyfaces"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.org/schema/rewrite-config-prettyfaces
http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd">
<url-mapping id="login">
<pattern value="/login" />
<view-id value="/pages/unsecure/login.jsf" />
</url-mapping>
<rewrite match="/pages/unsecure/login.jsf" substitute="/login" redirect="301"/>
</pretty-config>
或者,您可以将 Rewrite 直接用于 both 这些规则(因为您已经在使用带有 PrettyFaces 扩展的 Rewrite),使用 Join
规则:
@RewriteConfiguration
public class ExampleConfigurationProvider extends HttpConfigurationProvider
{
@Override
public int priority()
{
return 10;
}
@Override
public Configuration getConfiguration(final ServletContext context)
{
return ConfigurationBuilder.begin()
.addRule(Join.path("/login").to("/pages/unsecure/login.jsf").withInboundCorrection());
}
}
注意 .withInboundCorrection()
方法调用。这会自动设置从旧 url 到新 url 的入站重定向。
希望对您有所帮助。干杯!