いいね!数

0

閲覧数
247
「ファイルのダウンロード」コントロールについての質問です。

作成日時と更新日時を表示することができますが、両方とも

YY/MM/DD hh:mm

というように、年月日 分秒の表記(年は下2桁)になっています。

ここの表記を

YYYY/MM/DD hh:mm:ss

というように、年月日 時分秒の表記(年は4桁)にすることはできないでしょうか?

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:Apr 14, 2014, 3:42:58 PM

回答・コメント

いいね!数

2

【回答ではありませんが】

もう調べていらっしゃるかもしれませんが、プロパティ createdValue が作成日をカスタマイズできるものでスクリプトで書くこと(変更すること)ができます。

var プロパティでこのファイルを指定して(例:file)、var date:Date = new Date(file.getCreated());

と作成日を取得はできます。これをご希望のフォーマットに変換するには、一般的に SimpleDateFormat を使いますが、

これはテキストとして扱うもので、 createdValue では java.util.Date 型で指定しなければならないようなので型が違ってしまいます。

このコントロール自体、フォーマットを指定できるようにならない限り実現不可能なような気がします。

もう少し調べてみます。

 

回答日時:Apr 14, 2014, 9:52:58 PM

いいね!数

2

【こちらもズバリの回答ではないですが】

日付のフォーマット、変えられないんですよねぇ。

私は、「fileNameValue」プロパティに、ファイル名、サイズを詰め込んで対応したことが有ります。

ここに、katoman さんが書いている作成日をくっつけると、一応表示できます。

苦肉の策ですが。

  <xp:fileDownload rows="99"
                        id="bodyFileDownload" displayLastModified="false"
                        value="#{currentDoc.body}" displayCreated="false"
                        allowDelete="${javascript:!compositeData.readOnly;}"
                        displayType="false" var="rowValue" displaySize="false"
                        hideWhen="#{javascript:!currentDoc.isEditable();}">
                       <xp:this.fileNameValue><![CDATA[#{javascript:Common.getFileLabel(rowValue);}]]></xp:this.fileNameValue>
</xp:fileDownload>

SSJS

var Common = {

getFileLabel: function(rowValue){
   var aSizes:Array = ['bytes', 'kb', 'MB', 'GB', 'TB', 'PB'];
        var calcnr:Number = 0
        if(0 < rowValue.getLength()){
            calcnr = Math.floor(Math.log(rowValue.getLength())/Math.log(1024));
        }
        var fSize = (rowValue.getLength()/Math.pow(1024, Math.floor(calcnr))).toFixed(2)+" "+aSizes[calcnr];
        return rowValue.getName() + "  (" + fSize + ")"; }
}
回答日時:Apr 15, 2014, 8:57:35 AM

いいね!数

2

KATOMANさん、EBIHARAさん、回答ありがとうございます。

EBIHARAさんのおっしゃるやり方+KATOMANさんがおっしゃったSimpleDateFormatを使って回避しました。

ファイルダウンロードコントロールの「var」プロパティをfDataという名前で定義した後、

「fileNameValue」プロパティを[値の計算]にして、

var fName = fData.getName();
var fDate:Date = new Date( fData.getCreated() );
var sdf1 = new java.text.SimpleDateFormat( "yyyy/MM/dd HH:mm:ss" );
return sdf1.format( fDate ) + " " + fName;

という式を書きました。

ファイル名の長さは変動するので、作成日時を先に書くことによって、先頭位置を固定にするようにしました。

そのため、「fileNameTitle」プロパティの値も「作成日時 ファイル名」とするようにしました。

回答日時:Apr 15, 2014, 9:54:30 AM