PrettyFaces使用映射的网址和动作,我失去了所有的风格

时间:2014-06-09 02:52:16

标签: jsf prettyfaces

在我开始使用映射网址功能之前,我一直在为网址使用漂亮的面孔(第3.6节)。 http://ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.actions

我正在获得输出和我希望发生的动作正常。但问题是我无法访问资产文件夹下的任何资产。我得到了404.奇怪的是,对于其他每个配置都没有问题。当我一起运行它们时不是问题。该应用程序正在使用模板,因此指向css,js等的链接完全相同。当我去一个简单的''(例如/ home)映射他们工作正常,转到另一页的行动,他们不工作。但是模板渲染确实如此。实际上参数注入和动作也是如此。

PRETTY CONFIG:

<url-mapping id="home"> <!-- assets work -->
    <pattern value="/home" />
    <view-id value="/home.jsf" />
</url-mapping>
<url-mapping id="validate-token"> <!-- assets don't work -->
  <pattern value="/validate-token/type/#{id:validateByTokenController.tokenType}/token/#{validateByTokenController.token}" />
  <view-id value="/validate-token.jsf" />
  <action>#{validateByTokenController.init}</action>
</url-mapping>

BEAN:

@RequestScoped
@Named
public class ValidateByTokenController {

private String tokenType;

private String token;

public void init() {
    token = "J" + token;
    tokenType = "J" + tokenType;
}

XHTML SAMPLE CSS LINKS :(“home”配置的相同链接,但不是“validate-token”)

<link rel="stylesheet"
    href="assets/plugins/bootstrap/css/bootstrap.min.css" />
<link rel="stylesheet" href="assets/css/style.css" />

提前致谢。

1 个答案:

答案 0 :(得分:1)

问题是您使用CSS文件的相对URL。

使用/validate-token/type/foo/token/bar之类的网址,浏览器会认为/validate-token/type/foo/token/是当前目录。所以他试图从/validate-token/type/foo/token/assets/css/style.css加载CSS文件。

尝试使用CSS的绝对网址:

<link rel="stylesheet" href="#{request.contextPath}/assets/css/style.css" />