概要: Webエンジン Ver 5.1.3.0 (2010/02/01) をリリースいたします。 今回のリリースのおける主な変更点は、ヘッダー固定など、JavaScript周りのバグ修正です。 ※ バージョンアップされる場合は、ビルドファイル(verup.x.x.x.x.zip)に含まれるchanges.txtを確認の上、 作業をお願いします。 ※ 変更点に関する詳細及びその他の修正内容については、添付のリリースノートを参照下さい。 5.1.3.0 (2010/02/01) [選択プルダウン・バグ修正] メニューまたは、DBメニューで、ラベル(短)が定義されている場合に、検索画面でも、ラベル(短)でプルダウン の内容が表示されているバグを修正します。 対応としては、入力不可能な状態での表示(レンデラー適用時)と同じく、一覧表示の場合のみ、ラベル(短)が適用 されるようにします。 org.opengion.hayabusa.db.Selection.getOption(String, boolean, boolean) org.opengion.hayabusa.db.Selection_CODE.Selection_CODE(CodeData) org.opengion.hayabusa.db.Selection_CODE.getOption(String, boolean) org.opengion.hayabusa.db.Selection_CODE.getOption(String, boolean, boolean) org.opengion.hayabusa.db.Selection_RADIO.getOption(String, boolean, boolean) org.opengion.hayabusa.db.Selection_DBRADIO.getOption(String, boolean, boolean) org.opengion.hayabusa.db.Selection_DB.Selection_DB(String, String, String) org.opengion.hayabusa.db.Selection_DB.getOption(String, boolean) org.opengion.hayabusa.db.Selection_DB.getOption(String, boolean, boolean) org.opengion.plugin.column.Editor_MENU.getValue(String) org.opengion.plugin.column.Editor_MENU.getValue(int, String) org.opengion.plugin.column.Editor_DBMENU.getValue(String) org.opengion.plugin.column.Editor_DBMENU.getValue(int, String) org.opengion.plugin.column.Editor_DBMENU.getOption(TagBuffer, String, boolean) [DBメニュー・バグ修正] DBメニューを定義する際に、ラベル(短)(第3カラム)を指定した場合に、ラベル(短)の値がnullの場合でも ラベル短で表示されてしまい、選択項目の表示がnullとなってしまうバグを修正します。 org.opengion.hayabusa.db.Selection_DB.Selection_DB(String, String, String) [画面遷移なし登録・バグ修正] 画面遷移なし登録を有効にした場合に、特定のcommandでsubmitした際に、submit先のog:forwardタグが 正しく動作しない問題に対応します。 これは、画面遷移なし登録を行う際にog:headタグに指定する、noTransition="true"の属性値に関して、 サーバーサイドでの状態とクライアントサイドでの状態が一致していないことが原因です。 noTransition="true"の設定については、result.jspでのみ設定を行うことで、これを起点にバックグラウンド で実行されるupdate.jsp、entry.jspでは、設定しなくても動作するように、セッションにその情報を保存 しています。(サーバーサイドの状態) 一方、クライアントに読み込まれるJavaScriptでは、そのsubmitをバックグラウンドで実行するかどうかを submitする際のコマンドにより制御しています。(通常の他画面への遷移等は、バックグラウンドで実行しないため) ここで、submitするcommandをNEWとすると、クライアント側では、バックグラウンドsubmitは、行われません。 しかしながら、サーバー側ではセッション情報の値からバックグラウンドsubmitされたものとして処理される ため不整合が発生していました。 今回の対応では、サーバー側の状態をセッションに保存するのではなく、クライアント側からパラメーターとして 送ることで、そのリクエストを画面遷移なしモードとして処理するかどうかを判定するように変更します。 この場合の弊害として、「無効である」という状態は、リクエストで送信されなくなるため、システムリソースで システム全体で有効となっている場合に、特定の画面だけを無効にする場合は、result.jspだけでなく、関連する 全てのJSPでnoTransition="false"を指定する必要があります。 jsp/common/option/noTransition.js jsp/common/option/ajaxSubmit.js jsp/common/option/jqog.js org.opengion.hayabusa.taglib.CommonTagSupport.setNoTransitionRequest(boolean) org.opengion.hayabusa.taglib.CommonTagSupport.isNoTransitionRequest() org.opengion.hayabusa.taglib.CommonTagSupport.setAjaxSubmitRequest(boolean) org.opengion.hayabusa.taglib.CommonTagSupport.isAjaxSubmitRequest() org.opengion.hayabusa.taglib.HeadTag.setUseAjaxSubmit(String) org.opengion.hayabusa.taglib.HeadTag.setNoTransition(String) org.opengion.hayabusa.taglib.HeadTag.doEndTag() org.opengion.hayabusa.taglib.EntryTag.doEndTag() org.opengion.hayabusa.taglib.EntryTag.setNoTransition(String) org.opengion.hayabusa.taglib.ForwardTag.doEndTag() org.opengion.hayabusa.taglib.ForwardTag.setNoTransition(String) org.opengion.hayabusa.taglib.ForwardTag.setUseAjaxSubmit(String) org.opengion.hayabusa.taglib.ViewFormTag.doEndTag() org.opengion.hayabusa.taglib.ViewFormTag.setNoTransition(String) [DB定義DB修正] DB定義DBが、PostgreSQL でも使用できるように調整しました。 また、PL/SQL の DATA_DEFAULT.sql を廃止するために、 エンジンに新規クラス plugin/column/DBType_DD.java を作成しました。 (一部、使用箇所が残っているため、PL/SQLの廃止はまだ) org/opengion/plugin/column/DBType_DD.java jsp/GF2000/insertGF01.jsp jsp/GF2010/insertGF02.jsp jsp/GF2020/directGF05.jsp jsp/GF2020/entry.jsp jsp/GF2020/insertGF05.jsp jsp/GF2030/insertGF06.jsp jsp/GF2060/GFM0034.jsp jsp/GF2060/GFM0035.jsp jsp/GF2060/GFM0036.jsp jsp/GF2060/GFM0040.jsp jsp/GF2060/GFM0045.jsp jsp/GF2090/query.jsp jsp/GF2110/directGF02.jsp jsp/GF2110/directGF05.jsp jsp/GF2150/result.jsp jsp/GF2160/GFM0035.jsp jsp/GF2160/GFM0036.jsp jsp/GF2160/GFM0040.jsp jsp/GF2160/GFM0045.jsp リソース修正 カラムリソースの DATA_DEFAULT(初期値) に、DBTYPE(文字種別) に、「DD」を設定 コードリソースの DBTYPE に、「DD」を追加 [ヘッダー固定バグ修正] ヘッダー固定が画面遷移なし登録で正しく動作しないバグについて修正します。 この問題は、ヘッダー固定の仕様として、テーブルを初回に描画した後、セル幅を固定 (CSSのtable-layout:fixed)していたため、HTMLを後から挿入してもセル幅の再調整が行われない ことが原因です。 今回の修正では、セル幅の固定を行わず、自動で再計算を行うように変更します。 また、このヘッダー固定の仕様として、元のヘッダー部分のコピーを作成することで、ヘッダー固定を 実現していますが、このコピーする際のヘッダーのセルの計算方法をIEとFireFoxで同じとなるように 内部ロジックの見直しも行います。 jsp/common/scrollBar2.js jsp/common/scrollBar2.css jsp/common/option/jqog.js [ヘッダー固定バグ修正] 上記の修正の影響で発生した、ヘッダーとボディーで異なるcolspan構造を定義した場合にレイアウトが 崩れてしまう問題に対応します。 これは元々、IEのバグであり、IEでは、th,tdタグにcolspanが含まれている場合に、widthを指定しても、 これが無視されてレンダリングされてしまうためです。(FireFoxでは、widthの指定でレンダリングされます) この問題は、theadとtbodyのcolspanの構造が同じであれば、発生しませんが、異なる場合に、レイアウトが 崩れてしまいます。 今回の対応では、IEの場合のみ、データの1行目のcolspan構造を解析し、これがtheadと異なる場合には、 ヘッダー固定を行うためのヘッダーテーブルに1行目をダミーデータとして付加し、正しくレンダリングされる ように対応します。(この対応は、IEのみ影響を受けます。FireFox等ではこの処理は行われません) jsp/common/scrollBar2.js [Ajaxツリーテーブル表示・バグ修正] Ajaxツリー表示で、展開ボタンを押した後に、その行に対して変更ボタンを押すと、再度展開できてしまう バグを修正します。 この問題は、変更時のHTMLの置き換えで、展開ボタンの状態(クラス属性)がクリアされてしまうことが原因 です。(展開ボタンの画像のみは、入れ替えていました) 今回の修正では、展開ボタンについては、クラス属性を含めて、元のものに置き換えるようにします。 jsp/common/option/noTransition.js [行選択エラー画面の改善] og:submitタグ等で、forward.jsp経由で別画面に遷移した際に、行が選択されていない場合に 表示されるエラーメッセージ(ERR0028 選択されていません。もう一度、選択しなおして下さい。) の背景色が真っ白になるバグを修正します。 これは、forward.jspで記述されているog:headタグで、headTypeがnullの場合に、CSSファイルがinclude されていなかったことが原因です。 今回の対応では、CSSファイルに限っては、headTypeがnullの場合でもincludeするように修正します。 org.opengion.hayabusa.taglib.HeadTag.doEndTag()