使用映射url和动作的PrettyFaces,我失去了所有的样式



我一直使用漂亮的面孔的url没有问题,直到我开始使用映射的url功能(第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>

豆:

@RequestScoped
@Named
public class ValidateByTokenController {
private String tokenType;
private String token;
public void init() {
    token = "J" + token;
    tokenType = "J" + tokenType;
}

XHTML示例CSS链接:(与"home"配置相同,但与"validate-token"不同)

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

问题是你的CSS文件使用的是相对url。

对于像/validate-token/type/foo/token/bar这样的URL,浏览器认为/validate-token/type/foo/token/是当前目录。所以他尝试从/validate-token/type/foo/token/assets/css/style.css加载CSS文件。

尝试使用绝对url代替你的CSS:

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

相关内容

  • 没有找到相关文章

最新更新