2

如何使用资源变量创建动态路径?

<ui:repeat value="#{backgroundImageBean.images}" var="image"> 
      <p:graphicImage value="#{resource['/path/#{image}']}" 
       style="width: 100%; height: 100%" /> 
</ui:repeat>

谢谢

4

2 回答 2

4

只需使用name属性而不是value属性。该value属性采用一个 URL,而该name属性已经采用了唯一的资源名称。然后在幕后以与#{resource[name]}.

<p:graphicImage name="path/#{image}" />
于 2013-10-09T13:06:54.060 回答
2

您的问题可以通过以下两种方式之一解决:

  1. 将零件嵌入'/path/'到您的模型中,以便#{image}返回资源的完整路径;
  2. 为要生成的图片路径创建别名,<ui:param>并在访问资源时使用:

    <ui:repeat value="#{backgroundImageBean.images}" var="image">
        <ui:param name="path" value="/path/#{image}" />
        <p:graphicImage value="#{resource[path]}" /> 
    </ui:repeat>
    

如果您坚持在不使用参数的情况下执行逻辑并且您的环境支持 EL 2.2+,那么您可以String#concat()在资源表达式中使用:

#{resource['/path/'.concat(not empty image ? image : '')}'
于 2013-10-09T13:04:59.553 回答