如何在JSF中以编程方式获取资源图?

Ton*_*ony 5 resources jsf jsf-2

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

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

但是来自我的豆子.只有EL评估才可能吗?

Bal*_*usC 7

真正的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();
// ...
Run Code Online (Sandbox Code Playgroud)

请注意,您只能以编程方式评估EL.你可以用Application#evaluateExpressionGet()它.

FacesContext context = FacesContext.getCurrentInstance();
String url = context.getApplication().evaluateExpressionGet(context, "#{resource['primefaces-supertheme:images/ui-icons_ffffff_0.png']}", String.class);
// ...
Run Code Online (Sandbox Code Playgroud)

如果您碰巧使用JSF实用程序库OmniFaces,可以通过Faces实用程序类简化为:

String url = Faces.evaluateExpressionGet("#{resource['primefaces-supertheme:images/ui-icons_ffffff_0.png']}");
// ...
Run Code Online (Sandbox Code Playgroud)