2014-06-09 19 views
0

直到我開始使用映射的網址功能(第3.6節)之前,我一直在使用漂亮的網頁來發佈網頁。 http://ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.actionsPrettyFaces使用映射的網址和操作,我失去了我所有的樣式

我得到的輸出和行動我想發生工作正常。但問題是我無法進入資產文件夾下的任何資產。我得到了404.奇怪的是,對於其他每個配置都沒有問題。當我將它們放在一起時,這不是問題。該應用程序正在使用一個模板,以便與CSS,JS等的鏈接完全相同。當我進入一個普通的ol(例如/ 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示例CSS鏈接:

<link rel="stylesheet" 
    href="assets/plugins/bootstrap/css/bootstrap.min.css" /> 
<link rel="stylesheet" href="assets/css/style.css" /> 
(對 「家」 的配置,但不適用於 「驗證令牌」 相同鏈接)

在此先感謝。

回答

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文件。

嘗試使用絕對URL爲你的CSS來代替:

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

是有道理的,和它的工作,我只是不爲什麼加在URL映射爲prettyfaces「動作」明確使它無法正常工作,其餘的依然奏效。無論如何感謝提示! –

相關問題