PrettyFaces using mapped urls and actions, i lose all my stylings

跟風遠走 提交于 2019-12-12 01:35:54

问题


I have been using pretty faces for urls without issue until i started using mapped URLs feature (Section 3.6). http://ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.actions

I'm getting the output and the actions i want to happen working fine. The problem though is i can't get to to any of my assets under assets folder. i'm getting a 404. The weird thing is that for every other config there hasn't been a problem. And isn't a problem when I run them together. The app is using a template so the links to css's, js's, etc.. are exactly the same. When I go to a plain ol' (e.g. /home) mapping they work fine, go to the other page with the action, they don't work. The template rendering does though. In fact the parameter injection and the action work as well.

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: (same links for "home" config, but not for "validate-token")

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

Thanks in advance.


回答1:


The problem is that you are using relative URLs for your CSS files.

With an URL like /validate-token/type/foo/token/bar the browser thinks that /validate-token/type/foo/token/ is the current directory. So he tries to load the CSS file from /validate-token/type/foo/token/assets/css/style.css.

Try using absolute URLs for your CSS instead:

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


来源:https://stackoverflow.com/questions/24113049/prettyfaces-using-mapped-urls-and-actions-i-lose-all-my-stylings

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!