2016-10-26 13 views
0

私はURLを持っています/{database}/api/data/collections/name/{name}Lotus Notes Xpages、APIドキュメントの "Content-Range"を取得する方法

ビューのすべてのエントリを取得する方法{name}getResponseHeader("Content-Range")としますか?

+0

あなたがすべてのエントリの*番号*を取得したいですか? Domino Access ServicesのURLを呼び出すLotusScript、Java、またはSSJSを使用していますか? –

+0

はい、すべてのエントリの番号を取得します。私はSSJSを使ってDomino Access ServicesのURLを呼び出す –

答えて

1

SSJS

あなたはHttpURLConnectionのメソッドのgetHeaderFields()で、すべてのレスポンスヘッダフィールドを取得することができます。

希望のヘッダーフィールドをget('Content-Range')で選択します。

例:

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"> 
    <xp:text escape="true" id="computedField1"> 
     <xp:this.value><![CDATA[#{javascript: 
      var url = new java.net.URL(
       "http://yourServer/yourDatabase.nsf/api/data/collections/name/All"); 
      var conn:java.net.HttpURLConnection = url.openConnection(); 
      conn.setRequestProperty("Accept", "application/json"); 
      if (conn.getResponseCode() == "200") { 
       try { 
        return conn.getHeaderFields().get('Content-Range'); 
       } catch(e) { 
        return 'Error reading header field "Content-Range"'; 
       } 
      } else { 
       return 'Error ' + conn.getResponseCode() + " " + conn.getResponseMessage(); 
      } 
     }]]></xp:this.value> 
    </xp:text> 
</xp:view> 

この例のXPageは、例えば、結果としてレンダリングitems 0-9/35であり、応答が合計35エントリのエントリ0〜9を含むことを示す。

あなたがエントリの合計数を取得したい場合のみ、同じURL 35だけのためにレンダリングされます

    var range = conn.getHeaderFields().get('Content-Range').get(0); 
        var total = range.substr(range.indexOf('/') + 1); 
        return total; 

これにライン

    return conn.getHeaderFields().get('Content-Range'); 

を変更。

CSJSクライアント側の

利用のXMLHttpRequestの方法getResponseHeader()

var xhr = new XMLHttpRequest(); 
xhr.open('GET', url, false); 
xhr.send(null); 
var range = xhr.getResponseHeader("Content-Range"); 
var total = range.substr(range.indexOf('/') + 1); 
return total 
+0

ありがとうございました –

+0

それはサーバーjsで動作します。しかし、私はクライアントjsに入ってほしい。 〜私は使用するときに動作します:var xhr = new XMLHttpRequest(); xhr.open( 'GET'、url、false); xhr.send(null); var contentRanger = xhr.getResponseHeader( "Content-Range")。toLowerCase(); contentRanger = contentRanger.replace( 'items'、 ''); contentRanger = contentRanger.split( '/'); var total = contentRanger [1];返信合計 –

+0

「私はSSJSを使用しています...」というあなたのコメントで述べたように、私はServer Side JavaScript(SSJS)バージョンを作成しました。だから、私たちは両方のバージョンを持っています:あなたのコメントに私の答えのSSJSとCSJS。 –

関連する問題