【问题标题】:PrettyFaces using mapped urls and actions, i lose all my stylingsPrettyFaces 使用映射的 url 和动作,我失去了所有的样式
【发布时间】:2014-07-29 13:35:58
【问题描述】:

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

我得到的输出和我想要发生的动作工作正常。但问题是我无法访问资产文件夹下的任何资产。我得到一个 404。奇怪的是,对于所有其他配置,都没有问题。当我一起运行它们时,这不是问题。该应用程序使用模板,因此指向 css、js 等的链接完全相同。当我转到一个普通的 ol'(例如 /home)映射时,它们工作正常,转到具有操作的另一个页面,它们不起作用。模板渲染确实如此。事实上,参数注入和动作同样有效。

漂亮的配置:

<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 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" />

提前致谢。

【问题讨论】:

    标签: jsf prettyfaces


    【解决方案1】:

    问题在于您对 CSS 文件使用了相对 URL。

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

    尝试为您的 CSS 使用绝对 URL:

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

    【讨论】:

    • 是有道理的,而且它有效,我只是不清楚为什么在漂亮面孔的 url 映射中添加“动作”会使其不起作用,而其余部分仍然有效。不管怎样,谢谢你的提示!
    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多