<script language="Cache" runat="server">
write "<script language=javascript>", !
write "int x = 10; alert(x);", !
write "</script>"
</script>
<script language="Cache" runat="server">
write "<script language=javascript>", !
write "int x = 10; alert(x);", !
write "</script",">", !
</script>
警告ボックスに Caché ObjectScript 変数を含むには、どのようにすればよいでしょうか?
#()# 構文を使用します。ご使用の Caché ObjectScript メソッド内部から、以下を実行します。
s error = "Bad password"
&js<alert(#(..QuoteJS(error))#);>
%CSP.Page クラスから提供されている
QuoteJS は、適切に引用符が付いた JavaScript 文字列を返します。また、返された結果に含まれるすべての引用符を適切にエスケープします。
CSP ページをロードするとき、以下のエラーが表示されます。
ERROR #5924: An error occurred and the specified error page could not be displayed - please inform the Web master.
このエラーは、異なる多くの問題から発生しています。エラー・ログから、実際のエラーに関する具体的な情報を入手してください。
Caché ターミナル で、以下のコマンドを入力します。
結果のエラー・ログを表示するには、
[Caché コントロール・パネル] の
[ログ] を開き、
[アプリケーション・エラー] を選択し、適切なネームスペースを選択します。エラーは、日付ごとにフォルダ内に表示されています。
カスタムのエラー・ページを設定している場合、このエラー・メッセージは、ご使用のカスタム・エラー・ページには呼び出しているページのエラーを処理する機能がないことを意味します。また、カスタム・エラー・ページ自体が、エラーを生成している可能性もあります。このエラーを追跡するには、カスタム・エラー・ページを一時的に停止して、CSP ページをロードしてみてください。
CSP ページがローカルで正常に表示されても、他のコンピュータから呼び出されると正常に表示
できない 場合は、ユーザが Caché のシングル・ユーザ・バージョンを使用しているか、Caché のライセンスを持っていないかのどちらかが原因と考えられます。リモート・マシンから CSP ページを呼び出す場合は、Caché の完全なバージョンと有効なライセンスを持ったキーの両方が必要です。インターネットでダウンロードしたバージョンに、Caché キーを追加しても、すべての機能を使用することはできません。完全なバージョンを入手する必要があります。
HTTP Request failed.Unable to process hyperevent.
基本的にハイパーイベント・エラーは、ブラウザが CSP ブローカー・アプレットと通信する必要があるのに、通信できない場合に発生します。これは、コード、または構成の問題に関係します。原因がコードにあるかを迅速に判断するために、
http://localhost:1972/csp/samples/zipcode.csp をロードしてみましょう。Caché がリモートでインストールされている場合、localhost に IP アドレス、またはマシン名を入れます。
#server をクリックし、
Zip ボックスに
02142 などの郵便番号を入力し、
Tab を押します。ハイパーイベント・エラーが発生しない場合は、構成は適切に行われており、問題はコードにあると考えられます。
<script language="cache" runat="server">
// if method is located in the page or in a class the page inherits from
d ..mymethod()
// if class cannot be called using dot syntax
d ##class(User.MyClass).mymethod()
</script>
ルーチンでの問題を指摘するエラー・メッセージを受け取りましたが、
INT ルーチンを見つけることができません。どこにあるのでしょうか?
既定では、CSP ページのコンパイル時にソース・コードは保存しません。CSP ページは、ユーザがそのページをブラウザにロードしようとしたとき、自動的にコンパイルされます。Caché でこのソース・コードを保存するようにするには、以下の 2 つのうち 1 つを実行します。
-
Caché スタジオ を使用して、CSP ページをコンパイルします。
スタジオ の
メニューで
を選択し、
[クラス] タブをクリックします。
[生成されたソース・コードを保存] チェック・ボックスに、チェックを付けます。次に、
メニューで
をクリックして、CSP ページをコンパイルします。
-
Do $System.CSP.LoadPage("/csp/samples/james.csp", "ck")
CSP ページを一度コンパイルし、そのソース・コードを保存するように Caché に要求すると、以下の方法でそのルーチンを見つけることができます。
CSP ページを実行すると、ブラウザに
#(variable)# のようなものが表示されます。なぜ、変数のデータと置換されないのでしょうか?
Dreamweaver の
プレビュー 機能、または
Windows エクスプローラ でダブル・クリックしてそのページを表示しようとしている場合、CSP ページは CSP コンパイラによって解析されません。CSP はこの方法で見ることはできません。IIS や Apache などの Web サーバをご使用でない場合は、いずれか 1 つを導入する必要があります。Web サーバの設定に問題がある場合は、
インターシステムズのサポート窓口 にお問い合わせください。
なぜ私の CSP タグは解析されないのでしょうか?
Web サーバが、CSP ページを解析用の CSP ゲートウェイに適切に渡していないためです。
CSP はエラーを記録しますか?ログを増大するにはどうすればよいでしょうか?また、ログはどこにあるのでしょうか?
-
カスタム・エラー・ページ内でのエラーなどの内部エラーがある場合は、
BACK^%ETN エラー・ログにログが記録されます。このログでカスタム・エラー・ページに関連する内部エラーを受け取った場合、コアの CSP エンジンに問題がある可能性が高いため、
インターシステムズのサポート窓口にお問い合わせください。
-
ユーザが独自のログ機能を追加するユーザ定義のエラー・ページを呼び出すことで、他のエラーも記録されます。
-
^%SYSLOG グローバルが削除された場合、CSP はこのグローバルへの重要なエラーに関する情報も記録します。
Set ^%SYSLOG=0 を実行した場合、このグローバルに関する情報は何も記録しません。このグローバルに含まれる情報は、内部デバッグのためだけに使用されます。
CSP セッションを終了するには、どのようにすればいいでしょうか?
CSP セッションは、Caché ObjectScript メソッドで
%session.EndSession プロパティを 1 に設定すると終了できます。CSP アプリケーションがタイムアウトした場合、ご使用の CSP クラスが自動的にセッションを終了します。
CSP セッションをクローズしましたが、Caché は私がライセンスを使用している状態であることを報告してきます。なぜでしょうか?
ユーザが単にブラウザを閉じただけなら、CSP セッションはユーザが指定したタイムアウトまで有効です。したがって、ライセンスはセッションが無効になるまで解放されません。タイムアウトに関する詳細は、次の "
タイムアウトの変更" に対する回答を参照してください。
また、ユーザが時間内に戻ってくることを想定して、同じライセンスを再度取得することができるように、CSP は猶予期間を設定しています。
%session.EndSession が 1 に設定された後の猶予時間は 5 分です。しかし各ライセンスは、CSP アプリケーションに対して最低 10 分が割り当てられる必要があります。例えばユーザがログアウトをクリックした時など、
%session.EndSession は、タイムアウトした後自動的に、またはアプリケーションによって手動で 1 に設定されます。
-
ログイン-12:00、ログアウト-12:15、猶予期間 5 分、ライセンス解放-12:20
-
ログイン-12:00、ログアウト-12:03、最小期間 10 分、ライセンス解放-12:10
-
ログイン-12:00、ブラウザ終了-12:10、タイムアウト設定 15 分、セッション終了-12:25、猶予期間 5 分、ライセンス解放-12:30
アプリケーションのタイムアウトを変更するには、どのようにすればいいのでしょうか?
アプリケーションの既定のタイムアウトは、各ネームスペースで 900 秒 (15 分) と設定されています。
-
特定のネームスペースで、すべての CSP ページに対する
タイムアウト を変更する方法は以下の通りです。
-
Caché キューブ をクリックして、
を選択します。
-
-
-
-
-
-
特定のアプリケーションに対する
Timeout を変更するには、ページ内で以下を入力します。
x はタイムアウトの秒数です。
s %session.AppTimeout = x
ユーザ CSP セッションがタイムアウトになるとき、クリーンアップ、またはロギングを実行したいと思っています。どのようにすればいいのでしょうか?
-
-
以下のうちの 1 つの方法で、アプリケーションに対するイベント・クラスとして、これを指定します。
-
-
<script language="cache" runat="server">
s %session.EventClass = "User.MyEventClass"
</script>
-
Note:
ここで、ユーザは情報をブラウザに返送することはできません (警告が発生するか、戻されます)。
ページ間で情報を渡すには、どのようにすればよいでしょうか?
-
追加のパラメータとして、次のページへのリンクで情報を入力します。この追加のパラメータは、
%request オブジェクトからアクセス可能です。
http://myserver/csp/user/mypage.csp?id=3&name=bill
-
-
%session オブジェクト内に、データを配置します。ユーザが 1 つのアプリケーションを同時に 2 つのブラウザで開くと、問題が発生します。
セッションがタイムアウトになったとき、他の Web ページをユーザに送信したいのですが、どのようにすればいいのでしょうか?
一番簡単な方法は、タイムアウト後に発生するように metatag で転送の設定を行うことです。
<html>
<head>
<META HTTP-EQUIV="REFRESH" CONTENT="910;
URL=youhavetimedout.csp">
</head>
<body>
<script language="cache" runat="server">
%session.AppTimeout = 900
</script>
</body>
</html>
ページを 60 秒ごとに自動的に更新したいのですが、どのようにすればいいのでしょうか?
CSP ページの最初で、以下の metatag を使用します。
META HTTP-EQUIV="REFRESH" CONTENT="60; URL=mypage.csp">
Caché 変数や式を CSP ページで表示するには、どうすればいいのでしょうか?
#(name)# : name は設定されています。
#($G(%request.Get(Username)))# : URL から Username を取得します。
#(2+7+3)# :Web ページ上で 12 を表示します。
この違いを示すため、以下のコード・サンプルを CSP ページに配置してみましょう。
Runtime: #($P($H,",",2))#
Compile Time: ##($P($H,",",2))##
ブラウザでページを開き、何度かこのページを更新します。ページが更新されるたびに、
Runtime 値が変更することに注意してください。
Compile Time 値はページがコンパイルされる時間を保持します。ページがリコンパイルされたときにのみ、変更されます。
#server 指示語と
#call 指示語は、JavaScript イベント、またはコードを使用して呼び出される必要があります。
#server 指示語は、
CSP Event Broker によってサーバでメソッドを呼び出します。これは、この Java アプレットに依存するので、ブラウザ依存とも言えるでしょう。メソッドから CSP ページを終了することで、情報は CSP ページに返送されます。これは、同期メソッド呼び出しを提供します。
#server メソッドが返されるまで、ユーザはページで何もできません。
#call 指示語の文は、CSP ページ内の隠し iFrame を使用して実行されます。これは Java を基にしたものではないので、ブラウザ依存です。
#call メカニズムは非同期メソッド呼び出しを提供し、メソッドが値を終了、または値を返すことを許可しません。バックグラウンドで
#call 経由で呼び出されたメソッドが動作している間でも、ユーザは作業を継続することができ、CSP ページでフィールドの変更を行うこともできます。
#include 指示語を使用して、JavaScript、html や単純なテキストなどのテキストを CSP ページに含むことができます。
<csp:include> タグには、ただしくフォーマットされた CSP ページが含まれます。このタグは ServerSideRedirect を使用してこのページを挿入し、元のページの処理に戻ります。
CSP ページをコンパイルするには、どうすればいいのでしょうか?
既定で、CSP ページが変更された後 (タイムスタンプ比較から決定される)、ブラウザにロードされるときに自動的にコンパイルされるようになっています。また、Caché スタジオやCaché ターミナルを使用して、CSP ページを手動でコンパイルすることもできます。
スタジオを使用して CSP ページをコンパイルする方法は、以下の通りです。
-
メニューで
を選択し、
[クラス] タブをクリックします。
-
-
メニューで
を選択して、CSP ページをコンパイルします。
-
ターミナルで、現在適切なネームスペースにいることを確認します。適切なネームスペースでない場合は、以下を入力してネームスペースを変更します。
-
SAMPLES> do $System.CSP.LoadPage("/csp/samples/james.csp", "ck")
フラグの最新で完全なリストを表示するには、ターミナルで以下のコマンドを実行します。
Do $System.OBJ.ShowFlags()
a - Include application classes. This flag is set by default.
b - Include sub classes.
c - Compile. Use this flag while loading a CDL file will cause the
classes loaded to be compiled as well.
d - Display. This flag is set by default.
e - Delete extent.
f - Force. Force a compilation even when classes are in use.
h - Generate help.
i - Validate XML export format against schema on Load.
k - Keep source. When this flag is set, source code of
generated routines will be kept.
l - Use lock while compilation classes. This flag is set by default.
p - Include percent classes.
q - SQL-only compilation.
r - Recursive. It means include all the classes that are
dependency predecessors.
s - Include system classes.
u - Update only. It means do not compile classes that are up-to-date.
v - Keep valid. When combined with "f" flag, also keeps the objects valid
after the compilation of the new classes.
y - Include classes that are related to the current class in the way that
they either reference to or are referenced by the current class in
SQL usage.
4 - Export CDL compatible with version 4 from later version.
o1- Optimize ..Property to i%Property where possible.
o2- Optimize calls within this class, no incremental compile support.
o3- Optimize calls within this class and to system classes.
o4- Optimize calls to all classes, only works from CompileAll entry point.
Default flags for this namespace =adlo1
You may change the default flags with the SetFlags(flags,system) call
Note:
f フラグを使用すると、既存のオブジェクトは、コンパイル後には無効になります。ユーザがクラスのコンパイル後もオブジェクトを有効にしたい場合は、
v フラグを使用します。
それらのメソッドを特定のクラスに配置すれば、CSP ページがそのクラスから継承することができます。そうすれば、ドット構文を使用してそのメソッドにアクセスできます。これを行うには、以下のように
<csp:class> タグを使用します。
<csp:class super="%CSP.Page,App.Utils">
プライベート・ページは、適切なトークンを使用して他の CSP ページから呼び出されたときに表示されます。プライベート・ページにブックマークを付けることはできず、ブラウザに URL を入力するだけでは表示することもできません。ページをプライベート・ページとして設定するには、以下のように
<csp:class> タグを使用します。
すべてのページで使用したい JavaScript 関数とヘッダがあります。これをページに含むには、どのようにすればいいのでしょうか?
<!--#include file="mystuff.inc"-->
これはテキスト形式のインクルード・ファイルで、Caché 5 の新機能です。ファイルのテキストは、ページがコンパイルされる前に自動的にページに組み込まれます。したがって、#()# 変数や
<csp:query> クエリの結果、
runat="server" コードなど、コンパイルする必要があるコードを含むことができます。
<csp:search> タグを使用し、ユーザが ID 以外でもフィールドを検索できるようにもしたいのですが、これは可能でしょうか?
<csp:search name=mySearch where="Name,Gender" CLASSNAME="Sample.Person">
サブディレクトリ内のページを供給する CSP アプリケーションは、どのように構成するのですか?
-
-
-
-
-
[OK] をクリックし、構成マネージャを終了するときに
[変更] をクリックします。
現在、
Windows 用の
Macromedia Dreamweaver MX を持っています。CSP との作業を行うためには、どのように構成すればいいのでしょうか?
現在、
Windows 用の
Macromedia Dreamweaver バージョン 4.0 以降を持っています。CSP との作業を行うためには、どのように構成すればいいのでしょうか?
現在、
Macromedia Dreamweaver 3.0 を持っています。CSP との作業を行うためには、どのように構成すればいいのでしょうか?
Web ブラウザとは異なるマシンで Caché を起動しています。どのように構成すればいいのでしょうか?
CSP アプリケーションでフレームを使用することはできますか?
はい。しかし、フレームセット・ページには、
.csp 拡張子を持つ名前を付ける必要があります。
index.html というページを作成し、CSP ページを左フレームと右フレームにロードする場合、2 つのセッションが使用することとなり、各 CSP ページに 1 つずつ、計 2 つの Caché ライセンスが必要となります。これは、情報を保存するためにセッション・オブジェクトを使用する場合に非常に混乱し、また、不必要なライセンスを使用する必要もあります。
index.csp フレームセット・ページを呼び出すことで、セッションもそのアプリケーションのライセンスも 1 つで済みます。フレーム内の両方の CSP ページは、このセッションと、セッションに保存されているすべての情報を共有します。
CSP で文字セットを使用するには、どうすればいいのでしょうか?
どの HTTP ヘッダ情報がブラウザに送信されるのでしょうか?
ヘッダ情報を表示するには、以下の 2 つの方法があります。
-
D $System.CSP.ShowPage("/csp/user/mypage.csp")
これにより、このページに対して生成された HTML ソースと HTTP ヘッダが表示されます。
-
set http = ##class(%Net.HttpRequest).%New()
set http.server = "localhost"
set http.Port = 1972
do http.Head("csp/samples/loop.csp")
do http.HttpResponse.OutputToDevice()
do http.%Close()
CSP に加え、
.csp 拡張子を使用する
Crystal Reports も使用しています。Caché Server Pages を使用するには、どのようにすればいいのでしょうか?
CSP と
Crystal Reports は両方とも
.csp ファイル拡張子を使用するので、Web サーバで両方を起動すると衝突が起きます。後にインストールされたアプリケーションは正常に起動しますが、先にインストールされたアプリケーションは正常に作動しません。このような衝突を回避するには、Web サーバ構成で
CSP 用に 1 つの仮想ディレクトリを、
Crystal Reports には別の仮想ディレクトリを作ります。
インターネット・サービス・マネージャ を使用して仮想ディレクトリを構成する方法は、以下の通りです。
-
メニューから
、
、
を選択し、
をクリックします。
-
-
CSP が後にインストールされている場合、
[Crystal] 仮想ディレクトリを右クリックし、
を選択します。
Crystal Reports が後にインストールされている場合、
[csp] 仮想ディレクトリを右クリックし、
を選択します。
-
-
-
-