Это работает, если вы предоставляете имена для своих параметров --- Visualforce не будет обрабатывать параметры в этом контексте, если они не названы.
<apex:actionFunction name="renderGallery" rerender="gallery" oncomplete="renderScripts();">
<apex:param name="noImg" value="{!URLFOR($Resource.NoImage)}" assignTo="{!noImage}"/>
<apex:param name="noImgUrl" value="{!URLFOR($Resource.NoImageThumb)}" assignTo="{!noImageThumb}"/>
</apex:actionFunction>
Если это не работает для вас сразу,пожалуйста, опубликуйте оставшуюся часть кода Visualforce, чтобы мы могли видеть, где «gallery» и «scriptPanel» по отношению к вашему тегу apex form. Получение повторного рендеринга для правильной работы, как известно, сложно и полностью зависит от иерархической позицииЭлементы DOM возвращаются.Чтобы гарантировать успешное повторное рендеринг gallery и scriptPanel, поместите их в отдельные выходные панели вне тега формы апекса, например:
<apex:outputPanel id="scriptPanel">
Selected Family: {!SelectedFamily}<br/>
</apex:outputPanel><br/><br/>
<apex:outputPanel id="gallery">
No Image: {!noImage}<br/>
No Image Thumb: {!noImageThumb}<br/>
</apex:outputPanel><br/><br/>
@ MatthewKeefe, абсолютно нет причин, по которым {! URLFOR ()} не может бытьиспользуется как переменная расширения - он компилируется в текст (например, '/ resource / 123718923'), поэтому решение Джима здесь на самом деле довольно интересно, поскольку оно избавляет его от необходимости делать запрос SOQL на объект StaticResource в его контроллере.