001 /*
002 * Copyright (c) 2009 The openGion Project.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013 * either express or implied. See the License for the specific language
014 * governing permissions and limitations under the License.
015 */
016 package org.opengion.hayabusa.taglib;
017
018 import org.opengion.fukurou.util.StringUtil ;
019 import static org.opengion.fukurou.util.StringUtil.nval ;
020
021 /**
022 * {@XXXX} 変数の特殊å?ç�?‚’、動çš?�«実行するタグですã?
023 *
024 * こã?タグの目çš??、{@XXXX} 変数の使ã�?–¹をドキュメント化することにありますã?
025 * 通常は、動çš?�ª編é›??ç�?‚’行うå¿?¦�ã?ありませんã€?
026 *
027 * 通常のリクエスト変数は、{@XXXX} で取り出すことが可能ですã?ところがã?
028 * {@SYS.XXXX} 、{@USER.XXXX} 、{@GUI.XXXX}ã€?などのシスãƒ?ƒ 予ç´??
029 * 変数を取りå?すå?合に、XXXX 部åˆ?‚’動的に変更することは出来ませんã€?
030 * こã?タグは、簡易的に、XXXX を引数に取り、動çš?�«取り出すことができるようにしますã?
031 *
032 * @og.formSample
033 * ●形式ï¼?
034 * <og:requestValue
035 * sys = "XXXX" シスãƒ?ƒ パラメータ の値を取å¾?
036 * user = "ID" UserInfoオブジェクトã?値を取å¾?og:userInfo)
037 * gui = "KEY" GUIInfoオブジェクトã?値を取å¾?
038 * mem = "XXXX" REQUEST_CACHE の値を取å¾?
039 * lbl = "XXXX" ラベルリソースの値を取å¾?
040 * msg = "XXXX" メãƒ?‚»ージリソースの値を取å¾?
041 * db = "COUNT" ãƒ??タベã?ス実行結果を取å¾?
042 * session = "XXXX" session Attribute の値を取å¾?
043 * date = "XXXX" 日付関係ã?値を取å¾?
044 * nvar = "XXXX" Unicodeæ–?—å?の値ã‚?HTML のエスケープ記号(&#xZZZZ;)に変換しますã?
045 * >
046 * ●body?šなã�?
047 *
048 * ●Tag定義??
049 * <og:requestValue
050 * sys 【TAG】{@SYS.XXXX} と同等ã?シスãƒ?ƒ パラメータ の値を取得しまã�?
051 * user 【TAG】{@USER.XXXX} と同等ã?UserInfoオブジェクトã?値を取得しまã�?
052 * gui 【TAG】{@GUI.XXXX} と同等ã?GUIInfoオブジェクトã?値を取得しまã�?
053 * mem 【TAG】{@MEM.XXXX} と同等ã?REQUEST_CACHE の値を取得しまã�?
054 * lbl 【TAG】{@LBL.XXXX} と同等ã?ラベルリソースの値を取得しまã�?
055 * db 【TAG】データベã?ス実行結果を取得しまã�?
056 * session 【TAG】session Attribute の値を取得しまã�?
057 * date 【TAG】日付関係ã?値を取得しまã�?
058 * nvar 【TAG】Unicodeæ–?—å?の値ã‚?HTML のエスケープ記号(&#xZZZZ;)に変換しまã�?
059 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
060 * />
061 *
062 *
063 * @og.rev 3.8.0.2 (2005/07/11) 新規作æ?
064 * @og.group 画面部å“?
065 *
066 * @version 0.9.0 2000/10/17
067 * @author Kazuhiko Hasegawa
068 * @since JDK5.0,
069 */
070 public class RequestValueTag extends CommonTagSupport {
071 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
072 private static final String VERSION = "4.0.0.0 (2007/10/18)" ;
073
074 private static final long serialVersionUID = 400020071018L ;
075
076 private String sys = null;
077 private String user = null;
078 private String gui = null;
079 private String mem = null;
080 private String lbl = null;
081 // private String msg = null;
082 private String db = null;
083 private String session = null;
084 private String date = null;
085 private String nvar = null;
086
087 /**
088 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
089 *
090 * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ージリソース統å�? getResource().getMessage â‡?getResource().getLabel )
091 *
092 * @return 後続å?ç�??æŒ?¤º
093 */
094 @Override
095 public int doEndTag() {
096 debugPrint(); // 4.0.0 (2005/02/28)
097
098 StringBuilder buf = new StringBuilder();
099
100 if( sys != null ) {
101 buf.append( sys( sys.trim() ) );
102 }
103 else if( user != null ) {
104 buf.append( getUserInfo( user.trim() ) );
105 }
106 else if( gui != null ) {
107 buf.append( getGUIInfoAttri( gui.trim() ) );
108 }
109 else if( mem != null ) {
110 buf.append( getRequestCacheData( mem.trim() ) );
111 }
112 else if( lbl != null ) {
113 buf.append( getLabel( lbl.trim() ) );
114 }
115 // else if( msg != null ) {
116 // buf.append( getMessage( msg.trim() ) );
117 // }
118 else if( db != null ) {
119 buf.append( getRequestParameter( "{@DB." + db.trim() + "}" ) );
120 }
121 else if( session != null ) {
122 buf.append( getSessionAttribute( session.trim() ) );
123 }
124 else if( date != null ) {
125 buf.append( getDateFormat( date.trim() ) );
126 }
127 else if( nvar != null ) {
128 buf.append( StringUtil.getUnicodeEscape( getRequestValue( nvar.trim() ) ) );
129 }
130
131 jspPrint( buf.toString() );
132
133 return(EVAL_PAGE); // ペã?ジの残りを評価するã€?
134 }
135
136 /**
137 * タグリブオブジェクトをリリースしますã?
138 *
139 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
140 *
141 */
142 @Override
143 protected void release2() {
144 super.release2();
145 sys = null;
146 user = null;
147 gui = null;
148 mem = null;
149 lbl = null;
150 // msg = null;
151 db = null;
152 session = null;
153 date = null;
154 nvar = null;
155 }
156
157 /**
158 * 【TAG】{@SYS.XXXX} と同等ã?シスãƒ?ƒ パラメータ の値を取得しますã?
159 *
160 * @og.tag
161 * 本来は、シスãƒ?ƒ パラメータ の値を取得できますが、シスãƒ?ƒ çš?�ª共有å?ã‚?
162 * 取得できるように機è?追åŠ?�—てã�?�¾すã?
163 * またã?ユーザー個別にシスãƒ?ƒ パラメータを変更できますã?こã?取得ã?ã€?
164 * シスãƒ?ƒ パラメータとして取得しますã?(値はユーザー個別値を返しますã?)
165 *
166 * SERVER_NAME こã?Tomcatが実行してã�?‚‹サーバã?å�? localhost ç?
167 * SERVER_URL Portも含ã‚?RLアドレス http://localhost:8823/
168 * CONTEXT_URL 実行してã�?‚‹コンãƒ?‚ストã?URLアドレス http://localhost:8823/dbdef2/
169 * REAL_PATH / ルートに対応する物ç�?ƒ‡ィレクトリ d:/webapps/dbdef2/ ç?
170 * CONTEXT_NAME コンãƒ?‚スト名(webapps 直下ã?仮想フォルãƒ?��) dbdef ç?
171 * DATE YMDH とほぼ同じですがã€?yyyy/MM/dd HH:mm:ss' の形式で取得できますã?
172 * 任æ„? ユーザーパラメータ(GE16) の値/シスãƒ?ƒ パラメータ(GE12)の値を取å¾?
173 *
174 * {@SYS.COOKIE.カラãƒ?��}で、Cookie の読み込みを行えますã?
175 * 上記以外に、予ç´?ªžや、シスãƒ?ƒ パラメータ の値の読取が可能ですã?
176 *
177 * @param val キャãƒ?‚·ュするサブキー
178 */
179 public void setSys( final String val ) {
180 sys = nval( getRequestParameter( val ),sys );
181 }
182
183 /**
184 * 【TAG】{@USER.XXXX} と同等ã?UserInfoオブジェクトã?値を取得しますã?
185 *
186 * @og.tag
187 * ユーザーパラメータとは異なりますã?
188 *
189 * 以下ã?値は UserInfo オブジェクトã?é ?›®から取得しますã?
190 *
191 * ・JNAME ユーザー日本語名称
192 * ・ID ユーザー?©?¤
193 * ・IDNO USER.ID が5Byte以上ã?時ã?み先é??‘文字を除ã�?�Ÿユーザー?©?¤
194 * ・INFO ユーザーæƒ??(ユーザーID?š日本語名称)
195 * ・LANG è¨?ª?
196 * ・ROLES ロール
197 * ・IPADDRESS IPアドレス
198 * ・LOGINTIME ログイン時刻
199 *
200 * 以下ã?値はあらかじめã?動的に作æ?されますã?
201 *
202 * ・YMD ?˜byte の今日のシスãƒ?ƒ 日ä»?
203 * ・YMDH ?‘4byte の今日のシスãƒ?ƒ 日æ™?
204 *
205 * それ以外ã?、外部より設定された値ですã?
206 *
207 * @param val キャãƒ?‚·ュするサブキー
208 */
209 public void setUser( final String val ) {
210 user = nval( getRequestParameter( val ),user );
211 }
212
213 /**
214 * 【TAG】{@GUI.XXXX} と同等ã?GUIInfoオブジェクトã?値を取得しますã?
215 *
216 * @og.tag
217 * GUIInfo オブジェクトで定義されてã�?‚‹属æ?æƒ??を取りå?すことがå?来ますã?
218 * 引数はã€?XXXX ID" とã�?�†状態で受け取りますã?(GUI. ははずした形)
219 * XXXXには、画面æƒ??(GUIInfo)の属æ?キーを指定しますã?IDが指定されなã�??合ã?ã€?
220 * 実行中の自åˆ??身の画面が指定されたことになりますã?
221 * これは、session 登録é ?›® の HybsSystem#GUIINFO_KEY キー の値で取得しますã?
222 * こã?値は,画面が呼び出される毎に毎回設定されており、リクエスト毎に
223 * æ‰?¾—し直すå¿?¦�がありますã?
224 *
225 * ID に、画面IDを指定したå?合ã?ã€?#064; æŒ?®šによるリクエスト引数の値を適用できますã?
226 * {@GUI.@XXXX ID} ã‚??{@GUI.XXXX @ID} ですã?(同時æŒ?®šも可能)
227 *
228 * ・KEY 画面ID
229 * ・ADDRESS 実行アドレス
230 * ・REALADDRESS 実行実アドレス
231 * ・SEQUENCE 表示é ?
232 * ・GROUPS メニュグルーãƒ?
233 * ・CLASSIFY メニュåˆ?¡?
234 * ・LEVEL メニュ階層番号
235 * ・LABEL 画面名称
236 * ・NAME 画面名称(=SNAME)
237 * ・SNAME 画面名称(short)
238 * ・LNAME 画面名称(long)
239 * ・ROLES ロールズ
240 * ・MODE アクセスモードå?(mr,mw,-r,-w のç¾??)
241 * ・TARGET ターゲãƒ?ƒˆ
242 * ・PARAM 設定å?(パラメータ)
243 * ・KBLINK リンク区åˆ?
244 * ・DESCRIPTION 概要説æ˜?
245 *
246 * @param val 画面æƒ??を取りå?すキー
247 */
248 public void setGui( final String val ) {
249 gui = nval( getRequestParameter( val ),gui );
250 }
251
252 /**
253 * 【TAG】{@MEM.XXXX} と同等ã?REQUEST_CACHE の値を取得しますã?
254 *
255 * @og.tag
256 * 検索時ã? request æƒ??をキャãƒ?‚·ュしてã�?‚‹メモリ上からå?を取りå?しますã?
257 * 通常は、query_init.jsp で定義されてã�?‚‹ GAMENID付ã?
258 * リクエストキャãƒ?‚·ュæƒ??を取りå?しますã?
259 *
260 * @param val キャãƒ?‚·ュするサブキー
261 */
262 public void setMem( final String val ) {
263 mem = nval( getRequestParameter( val ),mem );
264 }
265
266 /**
267 * 【TAG】{@LBL.XXXX} と同等ã?ラベルリソースの値を取得しますã?
268 *
269 * @og.tag
270 * ラベルリソースのロケールは、ログインユーザーのロケールになりますã?
271 * これは、{@LBL.XXXX Y} 引数処ç�?‚’おこなã�?�Ÿめã?、サポã?トメソãƒ?ƒ‰ですã?
272 * 引数はã€?XXXX Y" とã�?�†状態で受け取りますã?(LBL. ははずした形)
273 * ラベルにはã€??常のラベル(Label)以外に、Short,Tips,Comment のæƒ??を持ってã�?�¾すã?
274 * {@LBL.XXXX Y} の Y に、å?のLabel,Short,Tips,Comment の頭æ–??'L','S','T','C')ã‚?
275 * æŒ?®šすることで、それぞれã?状態を取得することが可能になりますã?
276 * Y を指定しなã�??å�?{@LBL.XXXX}) はã€?L' が指定された場合と同じ効果がありますã?
277 * Y は、å?頭æ–?—1文字で判断してã�?�¾すã?で、{@LBL.XXXX Short}と記述できますã?
278 * Y 引数にはã€?#064;で始まるリクエスト引数が指定できますã?例えば、{@LBL.XXXX @ZZ}
279 * とすると、ZZ のリクエスト引数の値ã�?Y に適用されますã?
280 * ラベルキーそã?もã?をパラメータ化することがå?来ますã?
281 * これは、{@LBL.@XXXX}とã�?�†形式になりますã?引数は、å?の説明と同じですã?
282 * こã?場合ã?、XXXX をキーにリクエスト引数の値がã?ラベルリソースのキーになりますã?
283 *
284 * @param val キャãƒ?‚·ュするサブキー
285 */
286 @Override
287 public void setLbl( final String val ) {
288 lbl = nval( getRequestParameter( val ),lbl );
289 }
290
291 /**
292 * 【TAG】{@MSG.XXXX} と同等ã?メãƒ?‚»ージリソースの値を取得しますã?
293 *
294 * @og.tag
295 * メãƒ?‚»ージリソースのロケールは、ログインユーザーのロケールになりますã?
296 * メãƒ?‚»ージリソースでは、{@MSG.XXXX AA @BB #CC} とã�?�†引数処ç�?‚’おこなã�?
297 * 事が可能ですã?
298 * 引数はã€?XXXX AA @BB #CC" とã�?�†状態で受け取りますã?(MSG. ははずした形)
299 * "AA @BB #CC" は、スペã?スで区åˆ?‚‰れたメãƒ?‚»ージリソースの引数æ–?—ですã?
300 * こã?、引数æ–?—にはã€??常æ–??AA)、リクエスト文å?@BB)、ラベルæ–??#CC)が指定できますã?
301 * ・通常æ–??AA)?šそのまま、メãƒ?‚»ージリソースの引数にセãƒ?ƒˆされますã?
302 * ・リクエスト文å?@BB)?šリクエスト引数に置き換えますã?通常、{@BB} æŒ?®šしますがã€?
303 * メãƒ?‚»ージパラメータの引数、{@XXXX ?¥?¥?¥ {@BB} ?¥?¥?¥} と、å?れ子でæŒ?®šできなã�?�Ÿめã?
304 * {@XXXX ?¥?¥?¥ @BB ?¥?¥?¥} と、省略形でæŒ?®šしますã?よって、引数としてã€??常æ–?—ã?
305 * 先é?にã€?@" を使用することは出来ませんã€?
306 * ・ラベルæ–??#CC)?šラベルキーを指定されたと解釈して、å?ç�?�—ますã?これはã€?CC"ã‚?
307 * キーに、ラベルリソースを検索しã?そã?è¨?ªžに応じた文字に変換後ã?メãƒ?‚»ージリソースの
308 * 引数にæŒ?®šしますã?PL/SQL等で、SET_ERRMSGS プロシージャの引数に、{#CC} æ–?—を
309 * æŒ?®šして、ラベルリソースを利用できますが、{@XXXX ?¥?¥?¥ {#CC} ?¥?¥?¥} と、å?れ子で
310 * æŒ?®šできなã�?�Ÿめã?{@XXXX ?¥?¥?¥ #CC ?¥?¥?¥} と、省略形でæŒ?®šしますã?
311 * よって、引数としてã€??常æ–?—ã?先é?にã€?#" を使用することは出来ませんã€?エスケープ未採用)
312 * メãƒ?‚»ージキーそã?もã?をパラメータ化することがå?来ますã?
313 * これは、{@MSG.@XXXX}とã�?�†形式になりますã?引数は、å?の説明と同じですã?
314 * こã?場合ã?、XXXX をキーにリクエスト引数の値がã?メãƒ?‚»ージリソースのキーになりますã?
315 *
316 * @param val キャãƒ?‚·ュするサブキー
317 */
318 // public void setMsg( final String val ) {
319 // msg = nval( getRequestParameter( val ),msg );
320 // }
321
322 /**
323 * 【TAG】データベã?ス実行結果を取得しますã?
324 *
325 * @og.tag
326 * 検索結果の件数をã?"DB.COUNT" キーでリクエストにセãƒ?ƒˆしてã�?�¾すã?
327 * 検索結果をã?"DB.ERR_CODE" キーでリクエストにセãƒ?ƒˆしてã�?�¾すã?
328 * これらã?、リクエストã?アトリビュートへセãƒ?ƒˆしてã�?‚‹為、query タグã‚??
329 * directWriteTable タグの処ç�?»¥降ã?リクエストスコープ中での取得になりますã?
330 *
331 * @param val キャãƒ?‚·ュするサブキー
332 */
333 public void setDb( final String val ) {
334 db = nval( getRequestParameter( val ),db );
335 }
336
337 /**
338 * 【TAG】session Attribute の値を取得しますã?
339 *
340 * @og.tag
341 * session スコープに登録されてã�?‚‹アトリビュートオブジェクトã?値ã‚?
342 * 取り出しますã?
343 *
344 * @param val キャãƒ?‚·ュするサブキー
345 */
346 public void setSession( final String val ) {
347 session = nval( getRequestParameter( val ),session );
348 }
349
350 /**
351 * 【TAG】日付関係ã?値を取得しますã?
352 *
353 * @og.tag
354 * これは、{@DATE.XXXX AA BB} 引数処ç�?‚’おこなã�?�Ÿめã?、サポã?トメソãƒ?ƒ‰ですã?
355 * 引数はã€?XXXX AA BB" とã�?�†状態で受け取りますã?(DATE. ははずした形)
356 * "XXXX" は、日付å?ç�?‚’行うキーæ–?—å?で予ç´?ªžになってã�?�¾すã?
357 * ・YMDã€???š8文字ã?日付データ(200X年XXæœ?X日)を扱ã�?�¾すã?
358 * ・Y2MDã€??š6文字ã?日付データ(0X年XXæœ?X日)を扱ã�?�¾すã?
359 * ・YMã€?? ?š6文字ã?日付データ(200X年XXæœ?を扱ã�?�¾すã?
360 * ・HMSã€???š6文字ã?時刻ãƒ??タ(XX時XXåˆ?Xç§?を扱ã�?�¾すã?
361 * ・YMDHMS ?š14文字ã?日付データ(200X年XXæœ?X日XX時XXåˆ?Xç§?を扱ã�?�¾すã?
362 * ・EEEã€???š曜日をデフォルトロケールで表示しますã?
363 *
364 * F付きは、フォーマットされた日付を返しますã?
365 * ・YMDFã€??š8文字ã?日付データ(200X年XXæœ?X日)を扱ã�?�¾すã?
366 * ・Y2MDFã€?¼š6文字ã?日付データ(0X年XXæœ?X日)を扱ã�?�¾すã?
367 * ・YMFã€???š6文字ã?日付データ(200X年XXæœ?を扱ã�?�¾すã?
368 * ・HMSFã€??š6文字ã?時刻ãƒ??タ(XX時XXåˆ?Xç§?を扱ã�?�¾すã?
369 * ・YMDHMSF?š14文字ã?日付データ(200X年XXæœ?X日XX時XXåˆ?Xç§?を扱ã�?�¾すã?
370 *
371 * AA 引数は、基準となる日付を、YYYYMMDD形式でæŒ?®šしますã?無æŒ?®šã?場合ã?ã€?
372 * 処ç�?™‚刻を基準にした、同ä¸?‚¿グå†?�§の同ä¸?—¥ä»?年月日時å?ç§?を使用して値を取得しますã?
373 * æŒ?®šできる日付ã?、å¿?�š、YYYYMMDD形式としã?時å?秒ã? ゼロにリセãƒ?ƒˆされた状態になりますã?
374 * AA には、数字で始まã‚?20050701など)実日付と@で始まるパラメータが使用できますã?
375 * @ZZ と記述することで、{@ZZ}でæŒ?®šするå?合と同様ã?リクエストパラメータが使用できますã?
376 * こã?パラメータの値は、YYYYMMDD形式ã?数字か、null(またã?ゼロストリング)ですã?nullの
377 * 場合ã?、なにも指定されてã�?�ªã�?�¨判断して、å?ç�?™‚刻を使用しますã?
378 * 第?’引数はã€?数字かã€?#064;)以外ã?場合ã?、省略されたと判断されますã?
379 *
380 * BB 引数は、日付につã�?�¦のåŠ?¸›算å?ç�?‚’行いますã?
381 * 省略すると、なにも加減算å?ç�?‚’行いませんã€?
382 * ・SD ?š当月のæœ??の日付にセãƒ?ƒˆしますã?(当月?‘日)
383 * ・ED ?š当月のæœ?¾Œã?日付にセãƒ?ƒˆしますã?(当月月末)
384 * ・SM ?š本年のæœ??の月にセãƒ?ƒˆしますã?(本年?‘月)
385 * ・EM ?š本年のæœ?¾Œã?月にセãƒ?ƒˆしますã?(本年?‘2月)
386 * ・SW ?š日付å?ç�??週初め(月曜日)にセãƒ?ƒˆしますã?日付ã?当日より前に移動しますã?
387 * ・EW ?š日付å?ç�??週末(日曜日)にセãƒ?ƒˆしますã?日付ã?当日より後ろに移動しますã?
388 * ・D1 ??DXXX ?š日を指定ã?åˆ?� けé?めますã?D1なら翌日、D200 なã‚?00日å¾?
389 * ・M1 ??MXXX ?š月を指定ã?åˆ?� けé?めますã?M1なら翌月、M6 なら半年å¾?
390 *
391 * @param val キャãƒ?‚·ュするサブキー
392 */
393 public void setDate( final String val ) {
394 date = nval( getRequestParameter( val ),date );
395 }
396
397 /**
398 * 【TAG】Unicodeæ–?—å?の値ã‚?HTML のエスケープ記号(&#xZZZZ;)に変換しますã?
399 *
400 * @og.tag
401 * HTMLでのエスケープ文字を使用して、Unicodeを文字å?化して登録する為の変換を行いますã?
402 * ここでは、å?力文字を、キャラクタ(char)型にåˆ?§£しã?(&#xZZZZ;)に変換してã�?��ますã?
403 * よってã€??常に?‘文å?Shift-JISで?’Byte,UTF-8で?“Byte)がã??˜Byteになりますã?
404 * こã?変換された文字å?をã?HTML上でそã?まま取り出すと、å?のUnicodeæ–?—に戻る為ã€?
405 * 通常のShift-JISでは、扱えなã�?–‡å?中国語など)でも表示可能になりますã?
406 *
407 * @param val キャãƒ?‚·ュするサブキー
408 */
409 public void setNvar( final String val ) {
410 nvar = nval( getRequestParameter( val ),nvar );
411 }
412
413 /**
414 * こã?オブジェクトã?æ–?—å?表現を返しますã?
415 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
416 *
417 * @return こã?クラスのæ–?—å?表現
418 */
419 @Override
420 public String toString() {
421 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
422 .println( "VERSION" ,VERSION )
423 .println( "sys" ,sys )
424 .println( "user" ,user )
425 .println( "gui" ,gui )
426 .println( "mem" ,mem )
427 .println( "lbl" ,lbl )
428 // .println( "msg" ,msg )
429 .println( "db" ,db )
430 .println( "session" ,session )
431 .println( "date" ,date )
432 .println( "nvar" ,nvar )
433 .println( "Other..." ,getAttributes().getAttribute() )
434 .fixForm().toString() ;
435 }
436 }