如何在JSF中通过编程方式获取资源地图?

6

我想访问资源地图,而不是像在我的CCS文件中那样

background-image: url("#{resource['primefaces-supertheme:images/ui-icons_ffffff_0.png']}");

但是从我的角度来看,仅使用EL表达式评估是否可能?
1个回答

8

真正的Java版本应该是Application#createResrouce(),然后再使用Resource#getRequestPath()方法:

FacesContext context = FacesContext.getCurrentInstance();
Resource resource = context.getApplication().getResourceHandler().createResource("images/ui-icons_ffffff_0.png", "primefaces-supertheme");
String url = resource.getRequestPath();
// ...

注意,你可以通过EL表达式来进行编程评估。你可以使用Application#evaluateExpressionGet() 方法来实现此功能。
FacesContext context = FacesContext.getCurrentInstance();
String url = context.getApplication().evaluateExpressionGet(context, "#{resource['primefaces-supertheme:images/ui-icons_ffffff_0.png']}", String.class);
// ...

如果您使用JSF实用程序库OmniFaces,可以通过Faces 实用程序类来简化此过程:
String url = Faces.evaluateExpressionGet("#{resource['primefaces-supertheme:images/ui-icons_ffffff_0.png']}");
// ...

谢谢你的回答!所有的变体都很有用。最简单的是使用Omnifaces。顺便说一下,我正在使用Omnifaces。Java的变体也很酷 :-) - Tony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接