在Salesforce Apex中动态引用静态资源名称

在Salesforce Apex中动态引用静态资源名称,salesforce,apex,Salesforce,Apex,我正在尝试循环文章类别,并根据Salesforce Apex中的标题为每个类别提供图标图像。我不想硬编码每个静态资源名称。我的想法是为每个循环迭代创建一个字符串变量,并通过该变量值引用匹配的静态资源名称。所以我看了一下关于这个问题的报告,它似乎没有按照预期的方式工作 <knowledge:categoryList categoryVar="category" categoryGroup="Help" rootCategory="Using_{!selectedCategory}" leve

我正在尝试循环文章类别,并根据Salesforce Apex中的标题为每个类别提供图标图像。我不想硬编码每个静态资源名称。我的想法是为每个循环迭代创建一个字符串变量,并通过该变量值引用匹配的静态资源名称。所以我看了一下关于这个问题的报告,它似乎没有按照预期的方式工作

<knowledge:categoryList categoryVar="category" categoryGroup="Help" rootCategory="Using_{!selectedCategory}" level="1">
    <apex:variable var="iconSource" value="pkb_{!selectedCategory}_{!category.name}" />
    <a href="#" class="item">
        <div class="box-title">
            <h3>{!category.label}</h3>
        </div>
        <apex:image value="{!$Resource[iconSource]}" />
    </a>
</knowledge:categoryList>


如果您有内部结构类似于以下的静态资源,您会想到它通常是如何完成的吗?

/js/...
/css/...
/img/...
您可以使用以下构造访问静态资源项:

{!URLFOR($Resource.resourceName, 'img/imageName.jpg')} 
因此,对于apex:image标记,它将如下所示:

<apex:image url="{!URLFOR($Resource.resourceName, 'img/imageName.jpg')}" width="50" height="50"/>

如果您有内部结构如下的静态资源:

/js/...
/css/...
/img/...
您可以使用以下构造访问静态资源项:

{!URLFOR($Resource.resourceName, 'img/imageName.jpg')} 
因此,对于apex:image标记,它将如下所示:

<apex:image url="{!URLFOR($Resource.resourceName, 'img/imageName.jpg')}" width="50" height="50"/>


您的意思是我需要上传一个
.zip
静态资源,并使用我的
iconSource
变量引用其内部结构吗?是的,这是Salesforce中此类情况的常用方法。你可以在SF文档中找到更多信息-嗯,你知道,逻辑工作正常,但是它在我的url末尾添加了额外的
orgId
param,所以我得到了404返回…'获取404(未找到)”,但我只是将其称为
,它可以与静态资源中的缓存控制字段值相关。您的意思是我需要上载
.zip
静态资源,并使用
iconSource
变量引用其内部结构吗?是的,这是Salesforce中此类情况的常用方法。你可以在SF文档中找到更多信息-嗯,你知道,逻辑工作正常,但是它在我的url末尾添加了额外的
orgId
param,所以我得到了404返回…'GET 404(Not Found)”,但我只是将其称为
,它可以与静态资源中的缓存控制字段值相关。