You need to sign in to do that
Don't have an account?
Imageコンポーネントを利用した画像の動的表示について
VisualforceページとAPEXにて、画像を動的に切り替えるサイトを作成しています。
簡単にまとめますと以下の動作を実現しようとしています。
<想定している動作>
1.事前に静的リソースに画像となるJPEGファイルをアップロード
2.アップロードしたJPEGファイル名をオブジェクトに格納
3.コントローラの読み込み時にオブジェクトから画像名を取り出し、VisualForceページで表示。
※現在のところ外部のWebサーバにアップして、
直リンク指定で表示させる方法はなしとしています。
<疑問点>
上記3.でAPEXから渡されたオブジェクト名をimageコンポーネントに渡しても
コンパイルは通るのですが画像が表示されません。
(よくある画像リンクエラーと同じように□の中に赤い×がついたものが表示されてしまいます)
拙いですがソースも記載させて頂きます。
何か特別な指定方法があるのか、あるいは、imageコンポーネント以外のものがあるのか
ご存じの方がいたらご指摘頂ければ大変助かります。
(参考URL等でも結構です)
[Visualforceページのソース]
<apex:page controller="ImageTestController" showHeader="false" sidebar="false" >
<div style="text-align:center;">
<apex:image url="{!$Resource.testimage}"></apex:image> <!-- この指定は表示OK -->
<apex:image url="{!Image1}"></apex:image> <!-- この指定はNG -->
<apex:image url="{!Image2}"></apex:image> <!-- この指定はNG -->
</div>
</apex:page>
[Apexのソース]
とりあえず現在はテストとして、定数のString型を直接返却しています。
public class ImageTestController {
public ImageTestController (){
}
public String getImage2() {
return '$Resource.testimage';
}
public String getImage1() {
return 'testimage';
}
}
以上です。
静的リソースにzipとかでまとめて保存する方法でどうでしょうか。
こんな形で1ファイルとして保存しておく。
ImageZip/image1.jpg
ImageZip/image2.jpg
サンプル
$Resource.xxxxはコンパイル(page保存)時に解釈されるから、前のやり方だとうまくいかないのでは。
とりあえず$Resource.ImageZipとかでフォルダまでは指定しておいて、ページ表示時に動的にフォルダ内の画像ファイルへの
パスを持ってくるようにすればいけると思います。
ikou さん
ご助言ありがとうございました。
ikouさんのサンプルソースを元に作成したところ
無事に想定している動作を実現できました。
$Resource.ImageZip のImageZip部分は固定となってしまいますが、
そこは運用でカバーしようと考えています。
<参考URL>
今回の調査で別途参考にしたHPです。
http://knowledge.sorich.jp/?SalesForce.com%2FVisualForce%2FApex%E3%82%BF%E3%82%B0%2Fstylesheet
ありがとうございました。