0

クライアント側の名前が、使用しているサーバー側の言語のキーワードまたは予約語である場合、名前の不一致の問題をどのように修正しますか?

DOJO JavaScriptツールキットにはQueryReadStoreクラスがあり、サブクラス化してRESTパターン化されたクエリをサーバーに送信できます。これをFilteringSelectDijitと組み合わせて使用​​しています。

QueryReadStoreをサブクラス化し、サーバーに渡されるパラメーターと引数を指定できます。しかし、途中のどこかで、「start」および「count」パラメーターがクライアントからサーバーに渡されています。APIにアクセスしたところ、QueryReadStore.jsがこれらのパラメーター名を送信していることがわかりました。

私はFiddlerを使用して、実際に送信および返送されているものを確認しています。サーバーの応答は、「start」パラメーターと「count」パラメーターが原因で、パラメーター名が一致しないことを示しています。問題は、PL/SQLで「start」と「count」を使用できないことです。

回避策または正しい実装のアドバイスをいただければ幸いです...thx。

//ここにコードスニペットを入れてみましたが、ほとんどがHTMLであるため、うまく機能しませんでした。

4

3 に答える 3

1

よくテストされ、適切に作成された JavaScript ツールキットをハッキングしているので、これは間違ったことのように感じますが、これは私が問題を修正した方法です。

DOJOX QueryReadStore.js に入り、"start" および "count" 参照を (サーバー側言語にとって) 受け入れ可能なパラメーター名に置き換えました。

PL/SQL (ただし、予約語を回避する方法がわからない)またはクライアント側のコード(サブクラス化ではうまくいきませんでした) を介して問題を処理したいと思います...図書館。しかし、それは機能し、先に進むことができます。

于 2008-10-10T20:39:43.223 に答える
0

pl / sqlプログラムはURLとmod_plsqlを介してアクセスされていますか?その場合、「柔軟なパラメーターの受け渡し」を使用でき、変数は名前と値のペアの配列に割り当てられます。

このようにパッケージ仕様を定義します...

create or replace package pkg_name
    TYPE plsqltable
   IS
      TABLE OF VARCHAR2 (32000)
         INDEX BY BINARY_INTEGER;

   empty   plsqltable;
 PROCEDURE api (name_array IN plsqltable DEFAULT empty ,
                         value_array IN plsqltable DEFAULT empty
   );
END pkg_name;

次に、体:

    CREATE OR REPLACE PACKAGE BODY pkg_name AS
    l_count_value number;
    l_start_value number;
    PROCEDURE proc_name (name_array IN plsqltable DEFAULT empty,
                   value_array IN plsqltable DEFAULT empty) is
    ------------
    FUNCTION get_value (p_name IN VARCHAR) RETURN VARCHAR2 IS 
    BEGIN
    FOR i IN 1..name_array.COUNT LOOP
        IF UPPER(name_array(i)) = UPPER(p_name) THEN
           RETURN value_array(i);
        END IF;
    END LOOP;
    RETURN NULL;
    END get_value;
    ----------------------
    begin
    l_count_value := get_value('count');
    l_start_value := get_value('start');
    end api;
    end pkg_name;

次に、を使用してpkg_name.apiを呼び出すことができます

http://server/dad/!pkg_name.api?start=3&count=3
于 2009-01-17T00:26:47.123 に答える
0

あなたが言及したように、APIからそれを削除するのではなく、実際に独自のフェッチでサブクラスを作成し、(理論的には)開始/カウントパラメーターを削除できます。ガイダンスについては、次の URL をご覧ください。

http://www.sitepen.com/blog/2008/06/25/web-service-data-store/

Start と count は、大量のデータ セットをフィルター処理するために使用できるクエリのパラメーターを渡すことができ、クライアント側のページングの管理に役立つため、実際には非常に便利です。代わりにサブクラス化し、インターセプトして削除しようとします。

于 2008-10-11T13:38:33.167 に答える