 |
マークは、次期バージョンにて対応予定です。 |
 |
マークは、スケジュールは未定ですが今後対応する予定です。
(無印)は、既にリリース済み製品で対応されたものまたは、回答(A.〜)により解決やクローズされた項目です。
|
【件 名】
ContentsManagerの環境変数初期化タイミングについて 【日 付】 (2002/02/05) 【Q番号】[0202005] 【製 品 名】 cContentsTemplate(Ver.
3.3.1)
ContentsTemplateを利用してHTMLを生成して画面出力を行っているのですが、デフォルトのHTMLシンボルキャラクター 変換機能がONになっている為、そのままだと出力する全てのタグがエスケープされてしまいます。
そこで変換機能をOFFにしようと、cFrameworkのMainServletを継承したクラスのservice()の最初でContentsManager.setEnv()で OFFにしたのですが、表示は全てエスケープされてしまいました。 getEnv()で調べたところ、ScreenHandlerが呼ばれる直前とviewクラスのtoString()の開始時の間のどこかで環境変数が リセットされているようで、MainServletに戻ってきたときにはONになっていました。
この現象は1回目の表示のみ起こる(2回目以降はOFFが維持される)ようなので、ScreenHandler#init()をオーバーライドして super.init()後にsetEnv()してみましたが、やはり結果は変わらず、結局環境変数がリセットされているのはScreenHandler#init()後〜view#toString()の間、というところまでしか突き止められませんでした。
この場合、1回目の表示からHTMLシンボル変換機能をOFFにするにはどうしたら良いでしょうか?
cContentsTemplate Ver.3.3.1の障害です。 原因はContentsManagerのコンストラクタでデフォルトの設定(setEnv(ENV_SYMBOL_HTML, ENV_ON))をしているので Viewクラスロード時に初期化されてしまうためです。 この件についてはcContentsTemplate Ver.3.3.2で対応しました。
尚、現バージョンでの回避策を以下に示します。
1.システム全体で指定する場合 Viewクラスのサブクラスで以下のコーディングをしてください。 contentsManager.setEnv(ContentsManager.ENV_SYMBOL_HTML, ContentsManager.ENV_OFF);
2.画面単位で指定する場合 Viewクラスのサブクラスで以下のコーディングをしてください。 ContentsData cd = this.getContentsData(getTemplateFullPath(), false);
3.出力項目単位で指定する場合 テンプレートファイルのフォーマット宣言部にtfを指定。 %String_TARGET_CONVERT_(tf)%
※ この場合はコーディングで指定する必要はありません。 セキュリティ上出力項目単位に設定することをお勧めします。
|