You need to sign in to do that
Don't have an account?
masako
メッセージボックスの表示
いつもお世話になっております。
ファイルアップロード画面とアップロードしたファイルのダウンロード画面を作っています。
ファイルダウンロード部分を、ダウンロードファイル名称(リンクで作成)をクリックするとダウンロードするのですが、
ファイル名称をクリックした時に、VBでいうメッセージボックスのOK / キャンセル、 はい / いいえ のようなメッセージを
ワンクッション入れたいと考えております。
Salesforce側?もしくは、JavaScript側での実装になるのでしょうか。。。
ご存知の方いらっしゃいましたら、実装方法、またはアドバイスお願いいたします。
単純なのはJavaScriptのconfirmかな。
ikou様
回答ありがとうございます。
JavaScriptのconfirmを使ってみたのですが、メッセージボックスが表示されずにそのままダウンロードが走ってしまいました。
元のソースが、
【Visualforce】
【Visualforce+JavaScript】
confirmを調べて試してみたのですが、ファイルダウンロード部分の記述がわかりません。
元のonclick部分の記述のwindow.openを記述すれば良いと思うのですが、ドキュメントオブジェクトのIdをどのようにしてJavaScript側に渡したら良いのでしょうか?
もし、上記の考え方自体も違うようでしたら、合わせて教えていただけないでしょうか?
よろしくお願いいたします。
これでどうでしょう?
余談ですがSF内へのリンクはhttpからのフルパスじゃない方がいいですよ。
Sandboxとか作成した時にurlが異なってきますんで。
ありがとうございます。
なんとかここからは、自分で解決しようと思ったのですが、わからないので申し訳ございませんが教えて下さい。
プログラムの方、修正してみたのですが「構文エラー」になってしまいました。
下記の記述で試したところ、構文エラーにはなりませんでした。
他にも、↓も試してみたのですが、リンクをクリックした時に「URL No Longer Exists」のエラーが出てしまいました。
「 file={!d.Id}」 部分の記述の問題かと思うのですが、どのように修正したら良いのかわかりません。
申し訳ございませんが、よろしくお願いいたします。
> 余談ですがSF内へのリンクはhttpからのフルパスじゃない方がいいですよ。
こちらもアドバイス、ありがとうございます。
file={!d.Id}は実行時にfile=xxxxxxxxxxxxxxxというSalesforceのIdにならなくてはいけません。
ダウンロードするファイルが固定ならばカスタム表示ラベルにでもIdを入れておけばいいでしょう。
検索したファイルをダウンロードする、というように動的に変わるのであれば、コントローラー側でちゃんとdにDocumentをセットしてください。
Controller
Page
こんなんでどうでしょう。
ikou様、ありがとうございます。
ファイルダウンロードは、動的に変わるものを作っております。
作成中のプログラムを変更してみたのですが、「構文エラー」になってしまいましたので、
上記のコントローラー、Pageのみで確認してみたのですが、同じ「構文エラー」になってしまい上手く行きませんでした。
(動的にIdを変えるようにしたいのですが、念の為、下記でも確認してみました。)
の部分をxxxxxxxxxxx部分には、存在するDocument.Id を記述するとコンパイルOK.
そのまま実行し、リンク部分( {!d.Name} ) をクリックすると、JavaScriptの「ファイルをダウンロードしてよろしいですか~?・・・」が表示され、
「いいえ」を選択 ⇒ エラー URL No Longer Exists・・・
「はい」 を選択 ⇒ 別ウィンドウで正常にダウンロード、表示できるが元の画面で 同じエラー(URL No Longer Exists・・・・)
が表示されています。
原因が全然わからず、申し訳ございませんがよろしくお願いいたします。
私が書いたサンプルは、ControllerのクエリにName項目が足りないので実行時エラーになっていました。
正しくは以下ですね。
Controller
Page
これを新規のクラス、ページとして保存してもコンパイルエラーが出ますか?
エラーが出るのはPageですか?Controllerですか?なんというエラーメッセージが出てますか?
私の環境ではちゃんと保存できますが。。
私の前のコメントで、Name を追加して試しましたが、前コメントの状況でした・・・。
因みにエラーは、page側でのエラーで、エラー内容は
Save error::構文エラー
で、{! d.Id} 部分に存在するId をそのまま記述すると、構文エラーは消えます。
実行結果は、前コメントの様な動きです。
もう一度、Page、Controller を新規で作り直しましたが、変わらず構文エラーでした。
ikou様の環境で 正常に保存出来ると言うことは、私の環境の問題ですね・・・
(別件で、一部ソースが表示されなかった為、昨日一度プロジェクトも削除してサーバーから取り直したのですが、
こちらも解決せず・・・、この件の構文エラーも変わらず。)
うーん、分からない。。。
このコードだと実行時エラーになる可能性はありますが、コンパイルのエラーとは・・・
標準オブジェクトのDocumentしか使ってないし、組織依存するような書き方じゃないんだけどな。
とりあえず{!d.id}の意味について分かりそうなページはこちらにあるので見てみてください。
(私のサンプルのgetterは省略形で書いてます)
あとはEclipseを使ってエラーが出ているなら、設定メニューの開発画面、または開発者モードにして作成してみてどうなるかとか・・
それでもダメなら私にはお手上げです!
原因がわからないままですが、とりあえず現状わかってる事を記述しておきます。
私の環境:Force.com IDE 20.0
試しにブラウザから直接、新規でController、Pageを保存しましたが、こちらでも恐らく同じヶ所でエラーになっています。
Error:構文エラー
同様に、下記の部分を削除すると正常に保存できます。
他の環境から試したところ、コンパイルエラーは発生しませんでした。
ikou様が載せていただいたコードを保存&実行してみたところ、
リンククリック後、JavaScriptの「ファイルをダウンロードしてよろしいですか?・・・」 表示後、
chromeブラウザ ⇒ 正常
「はい」 ⇒ 正常な動き
「いいえ」 ⇒ 正常な動き
IE
「はい」 ⇒ 別ウィンドウで正常にタウンロード、表示できるが元の画面でエラー(URL No Longer Exists・・・)
「いいえ」 ⇒ エラー URL No Longer Exists・・・
IE での実行後のエラーは、私の環境(IE8)、他の環境(こちらのバージョン未確認)でも起きました。
コンパイルエラーの原因はわかりませんが、ブラウザの方でも問題が起きておりますので、この(メッセージ表示)件について少し検討しようかと思います。
何か分かりましたら、こちらで報告したいと思いますのでとりあえずクローズで。
お忙しい中、長々とお付き合い頂きありがとうございました。
また何かありましたらよろしくお願いいたします。