いいね!数

0

閲覧数
257

XPagesで、1つの画面内に複数DBの関連文書情報を表示するアプリを開発しています。

その中で添付されている画像を表示したいのですが表示されません。

イメージソースには下記を記述しています。

var curdoc = Document1.getDocument();
var ritem  = curdoc.getFirstItem( "gazo_file_1" );
var attname = new java.util.Vector();
if ( ritem.getType() == 1 ) {
 if ( curdoc.hasEmbedded() ) {
  var att:java.util.Vector = ritem.getEmbeddedObjects();
  if ( att.isEmpty() ) {
   return null;
  } else {
   return curdoc.getUniversalID() + "/$FILE/" + att[0].getSource();
  }
 }
}

1つのDB内でテストする分には画像が表示されるのですが、別のDBの画像だと表示されません。

実行結果のソースを見てみると、URLが対象のDBではなく起動しているDBのパスに return の値が付いてしまいます。

きちんと対象DBのURLにするにはどうしたらよいのでしょうか?

※画像以外のDocument1のデータ参照は出来ています。

 

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:Feb 8, 2016, 7:38:48 PM

回答・コメント

いいね!数

1

こんにちは。

これ、1行目のcurdocが他DBの特定の文書を指すようにすればいいんですよね。

でも、Document1はたぶん他DBの文書をさしてるわけじゃないからうまく動かないのではないかと予想。

だったらこんなのどうでしょう。他DBのファイル名はとりあえず固定で。

var other_db = session.getDatabase(server, db_filename);

var view = other_db.getView(view_name);  // 文書検索用のビュー。1列目が文書特定用のキー

var key = Document1.getItemValueString(key_fieldname);  // ここで他文書を特定する何かのKeyを得る

var curdoc = view.getDocumentByKey(key);  // これで他DBの画像が格納されてる文書を特定

あとは元のコードで添付ファイルのURLが得られると思います。

 

 

 

 

 

回答日時:Feb 8, 2016, 11:19:47 PM

いいね!数

0

回答ありがとうございます。

Document1 はデータソースで別DBの文書を参照できています。

ただ、return curdoc.getUniversalID() + "/$FILE/" + att[0].getSource(); ではURLが <起動中のDB>/UNID/$FILE/ファイル名 となってしまい表示されないのです。

<別DB>/UNID/$FILE/ファイル名 にならないと画像として表示されないのです。(当然ですが・・・)

===============================================================================================

☆ 以下のコードで解決しました ☆

var curdoc = Document1.getDocument();
var curdb = curdoc.getParentDatabase();
var dburl = curdb.getHttpURL();
dburl = @LeftBack(dburl,"?")

var ritem  = curdoc.getFirstItem( "gazo_file_1" );
var attname = new java.util.Vector();
if ( ritem.getType() == 1 ) {
 if ( curdoc.hasEmbedded() ) {
  var att:java.util.Vector = ritem.getEmbeddedObjects();
  if ( att.isEmpty() ) {
   return null;
  } else {
   return dburl + "/" + curdoc.getUniversalID() + "/$FILE/" + att[0].getSource();
  }
 }
}

 

回答日時:Feb 9, 2016, 2:00:08 PM