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.hayabusa.common.HybsSystem;
019    import org.opengion.hayabusa.common.HybsSystemException;
020    import org.opengion.hayabusa.db.DBTableModel;
021    import org.opengion.fukurou.util.ErrorMessage;
022    import org.opengion.fukurou.util.XHTMLTag;
023    import org.opengion.fukurou.util.StringUtil;
024    
025    import static org.opengion.fukurou.util.StringUtil.nval ;
026    
027    import javax.servlet.http.HttpServletRequest;
028    import javax.servlet.http.HttpServletResponse;
029    import javax.servlet.http.HttpSession;
030    import javax.servlet.ServletException;
031    import java.io.IOException;
032    import java.io.ObjectInputStream;
033    import java.io.ObjectOutputStream;
034    import java.util.Enumeration;
035    import java.util.Map;
036    import java.util.HashMap;
037    
038    /**
039     * submitタグを用ã?¦ãƒšã?ジ転é€ã™ã‚‹ã‚¿ã‚°ã§ã?forward.jsp ã§ä½¿ç”¨)ã€?
040     *
041     * 通常ã€forward ã¯ã€ã?ージå†?»¢é€?サーãƒã?å†?ƒ¨ã§ã®è»¢é€?ã®ãŸã‚ã€åˆ¥ç”»é¢ã¸ã®é·ç§»ã«ã¯
042     * 使用ã§ãã¾ã›ã‚“。ã“れã?ã€åˆ¥ç”»é¢ã§ã¯ã€index.jsp ç­‰ã§ãƒ•レーãƒ??割ã™ã‚‹éš›ã?基準フォルãƒ??ã€?
043     * forward ã®å ´åˆã?クライアントã?ç?§£ã—ã¦ã?ªã?Ÿã‚ã?ã‚‚ã†ä¸?º¦å…ˆã?フォルãƒ?«å¯¾ã™ã‚‹
044     * フレーãƒ??割を行ãŠã?¨ã™ã‚‹ãŸã‚ã§ã™ã?
045     * (よãã€index.jsp ã® frame ã‚¿ã‚°ã«ã€src="../XXXX/query.jsp" ãªã©ã¨ã€è?åˆ??身ã®ãƒ•ォルãƒ?ã‚?
046     * 記述ã—ãŸãƒšã?ジを見ã‹ã‘ã¾ã™ãŒã€ã“れã?ã€ãƒ•ォルãƒ?‚’ã¾ãŸãŒã‚‹è»¢é€ã«ã€forward を使用ã™ã‚‹
047     * ç‚ºã®æ‚ªã?¯¾ç­–ã§ã™ã?)
048     * 実際ã¯ã€forward ã§ã¯ãªãã?redirect を使ã?¹ãã§ã™ã?redirect ã¯ã€æŒ‡å®šã?ã‚¢ãƒ‰ãƒ¬ã‚¹è¦æ±‚ã‚’ã€?
049     * ä¸?—¦ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«æŠ•ã’ã¦ãã“ã‹ã‚‰å†åº¦è¦æ±‚ã—ãªãŠã—ã¦ã‚‚らã?–¹å¼ã?ãŸã‚ã€ã“ã®ã‚ˆã†ã«ãƒ•ォルãƒ?‚’
050     * ã¾ãŸãŒã‚‹è»¢é€ã‚‚正常ã«å‡¦ç?§ãã¾ã™ã?
051     * ã“ã?ã€commonForward ã‚¿ã‚°ã§ã¯ã€ç”»é¢é·ç§»ã®æ¡ä»¶ã«å¿œã˜ã¦ã€forward ã?redirect ã®è‡ªå‹?
052     * 判定を行ã„ã€?©åˆ?«å‡¦ç?—ã¦ã?¾ã™ã?
053     * 判定æ¡ä»¶ã¯ã€æ‹¡å¼µå­ã‚„ã€?¸æŠžä»¶æ•°ãªã©ã‚’加味ã—ã¦ä»¥ä¸‹ã?判定をé ?¬¡ãƒ?‚¹ãƒˆã—ã¾ã™ã?
054     *
055     *   FORWARD :
056     *       アドレスãŒã? null(自åˆ??身) ã‹ã?.jsp ã‚’å«ã¿ã€?/" ãŒå?ã£ã¦ã?ªã??å?
057     *   REDIRECT:
058     *       アドレスãŒã?.jsp ã‚’å«ã¾ãªã?‹ã€?del>useTableData == false(è¡Œé¸æŠžã‚’ä½¿ç”¨ã—ãªã?ã‹ã?</del>
059     *       ãれ以å¤?.jsp ã‚’å«ã¿ã€?/" ã‚‚å«ã‚?ã§ã€?¸æŠžæ•°ãŒï¼‘ä»¶ã®ã¿ã®å ´å?
060     *       ã‚‚ã—ãã?useRedirectCheck="false"ã®å ´å?
061     *   COUNT_0 :
062     *       ãれ以外ã§ã€?¸æŠžæ•°ãŒï¼ä»¶ã®å ´å?
063     *   COUNT_N :
064     *       ãれ以外ã§ã€?¸æŠžæ•°ãŒï¼‘件以上ã?å ´åˆã?ã¾ãŸã?ã€ãã®ä»–ã?
065     *
066     * ã“ã“ã§ã€COUNT_0 ã®å ´åˆã?ã€æœªé¸æŠžã‚¨ãƒ©ãƒ¼ã€COUNT_N ã¯ã€è¤?•°é¸æŠžã‚¨ãƒ©ãƒ¼ã‚’è?å‹•çš„ã«è¿”ã—ã¾ã™ã?
067     *
068     * @og.formSample
069     * â—å½¢å¼ï¼?lt;og:commonForward /&gt;
070     * â—body?šãªã?
071     *
072     * â—Tag定義??
073     *   &lt;og:commonForward
074     *       dbkeys             ã€TAG】DBキーをCSV å½¢å¼ã§ã‚»ãƒ?ƒˆã—ã¾ã?
075     *       tableId            ã€TAGã€?通常使ã?¾ã›ã‚“)sessionã‹ã‚‰æ‰?¾—ã™ã‚?DBTableModelオブジェクトã? ID
076     *       debug              ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
077     *       useRedirectCheck   ã€TAG】éžé¸æŠžçŠ¶æ…‹ã?å ´åˆã«forwardを許å¯ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true)
078     *   /&gt;
079     *
080     * â—使用ä¾?
081     *     フォワードキャãƒ?‚·ãƒ¥ã«ã‚ˆã‚Šãƒšã?ジ転é€ã—ã¾ã™ã?
082     *     &lt;og:commonForward dbkeys="{&#064;dbkeys}" /&gt;
083     *
084     * @og.group ç”»é¢åˆ¶å¾¡
085     *
086     * @version  4.0
087     * @author       Masaharu Endo
088     * @since    JDK5.0,
089     */
090    public class CommonForwardTag extends CommonTagSupport {
091            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
092            private static final String VERSION = "5.3.6.0 (2011/06/01)" ;
093    
094            private static final long serialVersionUID = 536020110601L ;    // 5.3.6.0 (2011/06/01)
095    
096            // 3.5.5.3 (2004/04/09) å…±é€šã‚¢ãƒ‰ãƒ¬ã‚¹ã§æŒ?®šã™ã‚‹ã“ã¨ã§ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚­ãƒ£ãƒ?‚·ãƒ¥ã‚’有効利用ã™ã‚‹ã€?
097            private static final String DUMMY_HTML  = "/" + HybsSystem.getContextName() + "/jsp/common/dummy.html";
098    
099            // 3.8.5.1 (2006/04/28) dbkeys ã?null ã®å ´åˆã«å…¨ä»¶å–å¾—ã™ã‚‹ã‹ã©ã?‹ã‚?COMMON_FORWARD_DBKEYS_NULL_ALL ã§æŒ?®šã—ã¾ã™ã?
100    
101            private static final int FORWARD  = 0;
102            private static final int REDIRECT = 1;
103            private static final int COUNT_0  = 2;
104            private static final int COUNT_N  = 3;
105    
106            // 3.5.5.2 (2004/04/02) é¸æŠžè¡ŒãŒã€?¼‘行ã?ã¿ã‹ã?ãã†ã§ãªã?‹
107            private int rowCount = -1;
108    
109            // 3.5.5.2 (2004/04/02) é¸æŠžè¡Œã? DBTableModel ãƒ??タを引数ã«ä½¿ç”¨ã™ã‚‹ã‹ã©ã?‹ã€?
110    //      private boolean useTableData = HybsSystem.sysBool( "COMMON_FORWARD_USE_TABLE_DATA" );
111    //      private String  tableId          = HybsSystem.TBL_MDL_KEY;
112            private int             rowNo            = -1;
113    
114            // 3.5.5.5 (2004/04/23) URLã«é€£çµã™ã‚‹DBTableModelã®ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã?
115            private String  dbkeys          = null;
116    
117            // 3.5.5.8 (2004/05/20) submitã‚¿ã‚°ã® keys,vals を扱ã?仮想リクエスãƒ?ap
118    //      private String  useTableTemp    = null;
119            private String  tableIdTemp             = null;
120            private String  dbkeysTemp              = null;
121            private transient Map<String,String>      submitRequestMap        = new HashMap<String,String>();   // 3.5.6.2 (2004/07/05)
122            private transient Map<String,String>      submitTableMap          = new HashMap<String,String>();   // 3.8.5.1 (2006/04/28)
123    
124            // 4.0.0.0 (2007/11/09) éžé¸æŠžçŠ¶æ…‹ã§ã®forwardã®ãŸã‚ã®å±žæ?追åŠ?
125            private boolean isRedirectCheck         = true;
126    
127            /**
128             * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
129             *
130             * @og.rev 3.3.1.1 (2003/07/03) ?µ?²?¬ã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…報をU?²?¬ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã—ã¦è¿½åŠ?—ã¾ã™ã?
131             * @og.rev 3.5.5.2 (2004/04/02) フォルãƒ?¤–è»¢é€æ™‚ã¯ã€?¼‘è¡Œä»¥å¤–é¸æŠžã?ã€ã‚¨ãƒ©ãƒ¼ã¨ã—ã¾ã™ã?
132             * @og.rev 3.5.5.3 (2004/04/09) ãƒ?ƒãƒ?‚°æ™‚ã?ã€è»¢é€ã—ãªã?‚ˆã?«ã—ã¾ã™ã?
133             * @og.rev 3.8.0.4 (2005/08/08) requestUrlEncode å»?­¢
134             * @og.rev 3.8.0.8 (2005/10/03) dbkeys ã?null ã®å ´åˆã«å…¨ä»¶å–å¾—ã—ã¦ã?Ÿå‡¦ç?‚’復活ã—ã¾ã™ã?
135             * @og.rev 4.0.0.0 (2007/11/09) éžé¸æŠžçŠ¶æ…‹ã‹ã‚‰ã?é·ç§»ã‚’許å¯ã™ã‚‹ãƒ•ラグを追åŠ?11/12ã«æŒ¯ã‚Šå?ã‘å?ç?‚’selectResponseMethodã«ç§»å‹?
136             * @og.rev 5.0.0.2 (2009/09/15) XSS対å¿?>ãƒã‚§ãƒ?‚¯ã™ã‚‹
137             * @og.rev 5.3.6.0 (2011/06/01) エラーメãƒ?‚»ãƒ¼ã‚¸å¤‰æ›´(URLã®æŒ¯ã‚Šå?ã‘å?ç?™‚ã«...ã®ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã¯å‡ºåŠ›ã—ãªã?
138             *
139             * @return      後続å?ç??æŒ?¤º
140             */
141            @Override
142            public int doEndTag() {
143                    debugPrint();           // 4.0.0 (2005/02/28)
144    
145                    // useXssCheck( false ); // 5.0.0.2 (2009/09/15)
146    
147                    HttpServletRequest request  = ((HttpServletRequest)getRequest());
148                    HttpSession session = pageContext.getSession();
149                    String page = getForwardURI( request, session );
150    
151                    // 3.5.5.8 (2004/05/20) å†?ƒ¨ä»®æƒ³ãƒªã‚¯ã‚¨ã‚¹ãƒ?ap より値をå–å¾?
152    //              useTableData = nval( getSubmitRequestParameter( useTableTemp ),useTableData );
153    //              tableId          = nval( getSubmitRequestParameter( tableIdTemp  ),tableId );
154                    dbkeys           = nval( getSubmitRequestParameter( dbkeysTemp   ),dbkeys );
155    
156                    HttpServletResponse response = (HttpServletResponse)pageContext.getResponse();
157    
158                    String errMsgKey = null;
159                    try {
160                            // 3.5.5.2 (2004/04/02) 振りå?ã‘æ¡ä»¶ã‚’判定ã™ã‚‹ãƒ¡ã‚½ãƒ?ƒ‰ã‚’é?ã—ã¾ã™ã?
161                            // ã“ã?メソãƒ?ƒ‰ã«ã‚ˆã‚Šã€useTableData ãŒå?設定ã•れã¾ã™ã?処ç??ã«æ³¨æ„?
162                            int flag = selectResponseMethod( page );
163    
164                            // 3.8.0.8 (2005/10/03) dbkeys ã?null ã®å ´åˆã«å…¨ä»¶å–å¾—ã—ã¦ã?Ÿå‡¦ç?‚’復活ã—ã¾ã™ã?
165    //                      if( rowCount == 1 && useTableData ) {
166                            if( rowCount == 1 && dbkeys != null ) {
167                                    page = XHTMLTag.addUrlEncode( page,getTableUrlData() );
168                            }
169    
170                            String url = response.encodeRedirectURL( page );
171                            // 3.8.0.8 (2005/10/03) GET時ã? URL ã®é•·ã•制é™ãƒã‚§ãƒ?‚¯(æœ?¤§æ–?­—数㯠2,083 æ–?­?
172                            if( url != null && url.length() >= HybsSystem.MAX_GET_LENGTH ) {
173                                    String errMsg = "GET時ã? URL ã®é•·ã•ã?,æœ?¤§2,083 æ–?­—ã§ã™ã?"
174                                                            + " URL.length=" + url.length() + " , MAX_LENGTH=" + HybsSystem.MAX_GET_LENGTH ;
175                                    throw new HybsSystemException( errMsg );
176                            }
177    
178                            switch( flag ) {
179                                    case FORWARD:   if( isDebug() ) { jspPrint( "FORWARD URL = [" + url + "]" ); }
180                                                                    else { pageContext.forward( url ); }
181                                                                    break;
182                                    case REDIRECT:  // url = requestUrlEncode( url );               // 3.8.0.4 (2005/08/08)
183                                                                    if( isDebug() ) { jspPrint( "REDIRECT URL = [" + url + "]" ); }
184                                                                    else { response.sendRedirect( url ); }
185                                                                    break;
186                                    case COUNT_0:
187    //                                                              if( isDebug() ) {
188    //                                                                      jspPrint( "RedirectCheck = [" + isRedirectCheck + "]" );
189    //                                                                      jspPrint( "FORWARD URL = [" + url + "]" );
190    //                                                                      }
191    //                                                              if( isRedirectCheck ) { errMsgKey = "ERR0028" ; } // é¸æŠžã•れã¦ã?¾ã›ã‚“。もã?¸?º¦ã€?¸æŠžã—ãªãŠã—ã¦ä¸‹ã•ã??
192    //                                                              else{ response.sendRedirect( url );}    // 4.0.0.0 (2007/11/09) éžé¸æŠžçŠ¶æ…‹é?移フラグ追åŠ?
193                                                                    errMsgKey = "ERR0028" ;  // é¸æŠžã•れã¦ã?¾ã›ã‚“。もã?¸?º¦ã€?¸æŠžã—ãªãŠã—ã¦ä¸‹ã•ã??
194                                                                    break;
195                                    default: errMsgKey = "ERR0029" ;        // è¤?•°é¸æŠžã•れã¾ã—ãŸã€‚1件ã®ã¿é¸æŠžã—ãªãŠã—ã¦ä¸‹ã•ã??
196                                                                    break;
197                            }
198    
199                    } catch ( IOException ex ) {
200                            // 5.3.6.0 (2011/06/01) エラーメãƒ?‚»ãƒ¼ã‚¸è¡¨ç¤ºå¤‰æ›´
201    //                      String errMsg = "URLã®æŒ¯ã‚Šå?ã‘å?ç?™‚ã« IOException ãŒç™ºç”Ÿã—ã¾ã—ãŸã€?" + HybsSystem.CR
202    //                                              + ex.getMessage();                                      // 5.1.8.0 (2010/07/01) errMsg 修正
203                            String errMsg = ex.getMessage();                                        // 5.1.8.0 (2010/07/01) errMsg 修正
204                            throw new HybsSystemException( errMsg,ex );             // 3.5.5.4 (2004/04/15) 引数ã®ä¸¦ã³é ?¤‰æ›´
205                    } catch ( ServletException ex ) {
206                            // 5.3.6.0 (2011/06/01) エラーメãƒ?‚»ãƒ¼ã‚¸è¡¨ç¤ºå¤‰æ›´
207    //                      String errMsg = "URLã®æŒ¯ã‚Šå?ã‘å?ç?™‚ã« ServletException ãŒç™ºç”Ÿã—ã¾ã—ãŸã€?" + HybsSystem.CR
208    //                                              + ex.getMessage();                                      // 5.1.8.0 (2010/07/01) errMsg 修正
209                            String errMsg = ex.getMessage();                                        // 5.1.8.0 (2010/07/01) errMsg 修正
210                            throw new HybsSystemException( errMsg,ex );             // 3.5.5.4 (2004/04/15) 引数ã®ä¸¦ã³é ?¤‰æ›´
211                    }
212    
213                    // 3.5.5.2 (2004/04/02) フォルãƒ?¤–è»¢é€æ™‚ã¯ã€?¼‘è¡Œä»¥å¤–é¸æŠžã?ã€ã‚¨ãƒ©ãƒ¼ã¨ã—ã¾ã™ã?
214                    if( errMsgKey != null ) {
215                            ErrorMessage errMsg = new ErrorMessage( "Row Count Error Maximal Error!" );
216                            errMsg.addMessage( 0,ErrorMessage.NG,errMsgKey );
217    
218                            jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg,getResource() ) );
219                    }
220    
221                    return( SKIP_PAGE );            // ペã?ã‚¸ã®æ®‹ã‚Šã®å‡¦ç?‚’行ã‚ãªã??
222            }
223    
224            /**
225             * タグリブオブジェクトをリリースã—ã¾ã™ã?
226             * キャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨­å®šã‚’行ã„ã¾ã™ã?
227             *
228             * @og.rev 3.5.5.2 (2004/04/02) æ–°è¦è¿½åŠ?rowCount,useTableData)
229             * @og.rev 3.5.5.5 (2004/04/23) URLã«é€£çµã™ã‚‹DBTableModelã®ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã?
230             * @og.rev 3.8.5.1 (2006/04/28) URLã«é€£çµã™ã‚‹DBTableModelã®ã‚«ãƒ©ãƒ?‚’[カラãƒ?å½¢å¼ã§æŒ?®šã—ã¾ã™ã?
231             *
232             */
233            @Override
234            protected void release2() {
235                    super.release2();
236                    rowCount     = -1;
237    //              useTableData = HybsSystem.sysBool( "COMMON_FORWARD_USE_TABLE_DATA" );
238    //              tableId          = HybsSystem.TBL_MDL_KEY;
239                    rowNo            = -1;
240                    dbkeys           = null;                // 3.5.5.5 (2004/04/23)
241                    submitRequestMap        = new HashMap<String,String>();           // 3.5.5.8 (2004/05/20)
242                    submitTableMap          = new HashMap<String,String>();           // 3.8.5.1 (2006/04/28)
243    //              useTableTemp            = null;         // 3.5.5.8 (2004/05/20)
244                    tableIdTemp                     = null;         // 3.5.5.8 (2004/05/20)
245                    dbkeysTemp                      = null;         // 3.5.5.8 (2004/05/20)
246                    isRedirectCheck         = true;         // 4.0.0.0 (2007/11/12)
247            }
248    
249            /**
250             * フォワードå?URIã‚’å–å¾—ã—ã¾ã™ã?
251             *
252             * @og.rev 3.1.2.0 (2003/04/07) ソースコード中ã®å›ºå®šå?ã‚’ã?定義ファイルを使用ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ã™ã‚‹ã€?
253             * @og.rev 3.1.4.1 (2003/04/21) request.getQueryString() ã‚’addUrlEncodeã—ã¦ã?‚‹ç®?‰€ã‚’削除ã€?
254             * @og.rev 3.1.7.0 (2003/05/02) コマンãƒ?RENEW ã§ã€forward ã—ãŸå ´åˆã«ã€result.jsp ã«é·ç§»ã™ã‚‹ã‚ˆã†ã«ä¿®æ­£ã€?
255             * @og.rev 3.1.7.0 (2003/05/02) ç”»é¢?©?¤ã®ã‚»ãƒ?ƒˆã§ã€è?ç”»é¢ã‚’ã?BACK_GAMENID ã€?£›ã?先をã€GAMENID ã«ã™ã‚‹ã€?
256             * @og.rev 3.1.8.0 (2003/05/16) SubmitData クラスを利用ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ã€?
257             * @og.rev 3.3.1.1 (2003/07/03) ForwardManager クラスã®å»?­¢ã€‚飛ã?å…ˆã?キャãƒ?‚·ãƒ¥ã‚’å»?­¢ã—ã¾ã™ã?
258             * @og.rev 3.5.5.2 (2004/04/02) é¸æŠžè¡Œã?件数を設定ã—ã¦ãŠãã¾ã™ã?
259             * @og.rev 3.5.5.3 (2004/04/09) dummy.html ã‚?static final ã§çµ¶å¯¾ãƒ‘スæŒ?®šã—ã¾ã™ã?
260             * @og.rev 3.5.5.4 (2004/04/15) メソãƒ?ƒ‰å†?§ä½¿ç”¨ã—ã¦ã?ªã??gamenId,jspID 変数を削除ã—ã¾ã™ã?
261             * @og.rev 3.5.5.5 (2004/04/23) 余計ãªãƒœã‚¿ãƒ³é–¢é€£æƒ??を転é€ã—ãªã?‚ºã«ã€ã‚­ãƒ¼ã‚’変更ã—ã¾ã™ã?
262             * @og.rev 3.5.5.5 (2004/04/23) SubmitTag ã® keys,vals 属æ?ã§æŒ?®šã—ãŸå?ã®ã¿ã€è»¢é€ã—ã¾ã™ã?
263             * @og.rev 3.5.5.8 (2004/05/20) SubmitTag ã® keys,vals 属æ?ã§æŒ?®šã—ãŸå?ã‚’ã?å†?ƒ¨ä»®æƒ³ãƒªã‚¯ã‚¨ã‚¹ãƒ?Mapã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?
264             * @og.rev 3.7.0.1 (2005/01/31) リクエスト変数ã«é¸æŠžã•れãŸä»¶æ•°ã‚’追åŠ?
265             * @og.rev 3.7.0.3 (2005/03/01) æŒ?®šã?行番å·ã¾ã§ç”»é¢ã‚’スクロールã•ã›ã‚‹æ©Ÿè?を追åŠ??
266             * @og.rev 3.8.0.8 (2005/10/03) BACK_GAMENID ãŒã‚れã? BACK_ROW を追åŠ?™ã‚‹ã?
267             * @og.rev 3.8.5.1 (2006/04/28) vals="[カラãƒ?]" ã¨ã?†å¼•æ•°ã‚’å?ç?§ãる機è?を追åŠ??
268             * @og.rev 5.1.8.0 (2010/07/01) VIEWã®å ´åˆã‚‚ã€ç›´å‰ã?JSPã«é·ç§»ã™ã‚‹ã€?
269             *
270             * @param       request HttpServletRequestオブジェク�
271             * @param       session HttpSessionオブジェク�
272             *
273             * @return      フォワードå?URI
274             */
275            private String getForwardURI( final HttpServletRequest request,
276                                                                      final HttpSession        session ) {
277    
278    //              String   cmd    = request.getParameter( "command" );
279                    String[] rows   = request.getParameterValues( HybsSystem.ROW_SEL_KEY );
280    
281                    // 4.0.0 (2007/05/16) query.jsp ã§è¤?•°command 時ã?処ç?¿®æ­£
282                    String   cmd  = request.getParameter( "command" );
283                    String[] cmds = request.getParameterValues( "command" );
284                    if( cmds != null && cmds.length > 1 ) {
285                            for( int i=0; i<cmds.length; i++ ) {
286                                    if( ! "NEW".equals( cmds[i] ) ) {
287                                            cmd = cmds[i]; break;   // NEW ã§ãªã??æœ??ã®ä¸?¤
288                                    }
289                            }
290                            // ã™ã¹ã¦ã?NEW ã®å ´åˆã?ã€å˜ä½?getParameter) ã?NEW ãªã®ã§ç´??りã§ã‚ˆã„ã€?
291                    }
292    
293                    // 3.5.5.2 (2004/04/02) é¸æŠžè¡Œã?ä»¶æ•°
294                    if( rows != null ) {
295                            rowCount = rows.length;
296                            rowNo = Integer.parseInt( rows[0] );
297                    }
298                    else {
299                            rowCount = 0;
300                     }
301                    // 3.7.0.1 (2005/01/31) リクエスト変数ã«é¸æŠžã•れãŸä»¶æ•°ã‚’追åŠ?
302                    setRequestAttribute( "ROW_COUNT",String.valueOf( rowCount ) );
303    
304                    if( cmd == null || cmd.length() == 0 ) { cmd = "INIT"; }
305    //              String forwardPage = "result.jsp" ;
306                    final String forwardPage;
307    
308                    String backPage = (String)session.getAttribute( HybsSystem.FORWARD_PAGE_KEY );
309                    String command  = cmd;          // 3.5.5.5 (2004/04/23)
310                    int    pagePlus = 0;
311    
312                    // コマンドパラメータã«ã‚ˆã‚ŠæŒ¯åˆ?‘
313                    // 5.1.8.0 (2010/07/01) VIEWã®å ´åˆã‚‚ã€ç›´å‰ã?JSPã«é·ç§»ã™ã‚‹ã€?
314    //              if( "FIRST,PREV,NEXT,LAST".indexOf( cmd ) >= 0 ) {
315                    if( "FIRST,PREV,NEXT,LAST,VIEW".indexOf( cmd ) >= 0 ) {
316                            forwardPage = backPage;
317    //              } else if( "NEW,VIEW,RENEW".indexOf( cmd ) >= 0 ) {
318                    } else if( "NEW,RENEW".indexOf( cmd ) >= 0 ) {
319                            // åˆæœŸå€¤
320                            forwardPage = "result.jsp";
321                    } else if( "INIT".equals( cmd ) ) {
322                            forwardPage = DUMMY_HTML;                       // 3.5.5.3 (2004/04/09)
323                    } else {
324                            // 共有オブジェクト検索
325    
326                            // リンクå…?‚³ãƒžãƒ³ãƒ‰åå–å¾?
327                            // 3.5.5.5 (2004/04/23) 余計ãªãƒœã‚¿ãƒ³é–¢é€£æƒ??を転é€ã—ãªã?‚ºã«ã€ã‚­ãƒ¼ã‚’変更ã—ã¾ã™ã?
328                            command = request.getParameter( HybsSystem.NO_XFER_KEY + cmd + "CMD" );
329    
330                            // 3.7.0.3 (2005/03/01) æŒ?®šã?行番å·ã¾ã§ç”»é¢ã‚’スクロールã•ã›ã‚‹æ©Ÿè?を追åŠ??
331                            if( rows != null && "ENTRY".equals( command ) ) {
332                                    setRequestCacheData( "SEL_ROW",String.valueOf( rowNo ) );
333                            }
334    
335                            if( "RESET".equals( command ) ) { // RESET æ™?
336                                    forwardPage = "result.jsp";
337                            }
338                            else {
339                                    // リンク先å–å¾?
340                                    forwardPage = request.getParameter( HybsSystem.NO_XFER_KEY + cmd );
341                                    // INSERTã¨COPYã®å ´åˆã?ã¿
342                                    if( "INSERT".equals( command ) || "COPY".equals( command ) ) {
343                                            if( rows != null ) { pagePlus = rows.length; }
344                                    }
345                            }
346    
347    //                      // リンク先å–å¾?
348    //                      forwardPage = request.getParameter( HybsSystem.NO_XFER_KEY + cmd );
349    //
350    //                      // INSERTã¨COPYã®å ´åˆã?ã¿
351    //                      if( "INSERT".equals( command ) || "COPY".equals( command ) ) {
352    //                              if( rows != null ) { pagePlus = rows.length; }
353    //                      }
354    //                      else if( "RESET".equals( command ) ) { // RESET æ™?
355    //                              forwardPage = "result.jsp";
356    //                      }
357                    }
358    
359                    if( ! forwardPage.equals( backPage ) ) {
360                            session.setAttribute( HybsSystem.REVIEW_PAGE_KEY , backPage );
361                    }
362                    session.setAttribute( HybsSystem.FORWARD_PAGE_KEY, forwardPage );
363    
364                    // 3.5.5.5 (2004/04/23) SubmitTag ã® keys,vals 属æ?ã§æŒ?®šã—ãŸå?ã®ã¿ã€è»¢é€ã—ã¾ã™ã?
365                    StringBuilder strURL = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
366                    strURL.append( "&" ).append( "command" ).append( "=" ).append( command );
367                    strURL.append( "&" ).append( "pagePlus" ).append( "=" ).append( String.valueOf( pagePlus ) );
368    
369                    String btnKey = HybsSystem.NO_XFER_KEY + cmd + "KEY_" ;
370                    int    keylen = btnKey.length() ;
371    
372                    Enumeration<?> enm = getParameterNames();         // 4.3.3.6 (2008/11/15) Generics警告対�
373    
374                    while( enm.hasMoreElements() ) {
375                            String key = (String)( enm.nextElement() );
376                            // 3.5.5.5 (2004/04/23) ä½™è¨ˆãªæƒ??を転é€ã—ãªã?§˜ã«ã€ã‚­ãƒ¼ã‚’é¸åˆ¥ã—ã¾ã™ã?
377                            if( key != null && key.startsWith( btnKey ) ) {
378                                    // 3.5.5.8 (2004/05/20) å†?ƒ¨ã®ä»®æƒ³ãƒªã‚¯ã‚¨ã‚¹ãƒ?Map ã«è¨­å®šã—ã¾ã™ã?
379                                    String kk = key.substring( keylen ) ;
380                                    String vv = getRequestValue(key) ;
381                                    // 3.8.5.1 (2006/04/28) vals="[カラãƒ?]" ã¨ã?†å¼•æ•°ã‚’å?ç?§ãる機è?を追åŠ??
382                                    if( vv != null && vv.length() > 2 && vv.charAt(0) == '[' && vv.charAt(vv.length()-1) == ']' ) {
383                                            submitTableMap.put( kk,vv.substring( 1,vv.length()-1 ));
384                                    }
385            //                      else if( "dbkeys".equals( kk ) ) {
386            //                              submitRequestMap.put( kk,vv );
387            //                      }
388                                    else {
389                                            submitRequestMap.put( kk,vv );
390                                            strURL.append( "&" );
391                                            strURL.append( kk ).append( "=" );
392                                            strURL.append( StringUtil.urlEncode( vv ) );
393                                    }
394    
395                                    // 3.8.0.8 (2005/10/03) BACK_GAMENID ãŒã‚れã? BACK_ROW を追åŠ?™ã‚‹ã?
396                                    if( "BACK_GAMENID".equalsIgnoreCase( kk ) && rowNo >= 0 ) {
397                                            strURL.append( "&BACK_ROW=" );
398                                            strURL.append( rowNo );
399                                    }
400                            }
401                    }
402    
403                    return XHTMLTag.addUrlEncode( forwardPage,strURL.toString() );
404            }
405    
406            /**
407             * ペã?ジã‚?リãƒ?‚¤ãƒ¬ã‚¯ãƒˆã‹ãƒ•ォワードã‹é¸æŠžã—ã¾ã™ã?
408             * 判定æ¡ä»¶ã¯ã€æ‹¡å¼µå­ã‚„ã€?¸æŠžä»¶æ•°ãªã©ã‚’加味ã—ã¦ä»¥ä¸‹ã?判定をé ?¬¡ãƒ?‚¹ãƒˆã—ã¾ã™ã?
409             *
410             *   FORWARD :
411             *       アドレスãŒã? null ã‹ã?.jsp ã‚’å«ã¿ã€?/" ãŒå?ã£ã¦ã?ªã??å?
412             *   REDIRECT:
413             *       アドレスãŒã?.jsp ã‚’å«ã¾ãªã?‹ã€?del>useTableData == false(è¡Œé¸æŠžã‚’ä½¿ç”¨ã—ãªã?ã‹ã?</del>
414             *       ãれ以å¤?.jsp ã‚’å«ã¿ã€?/" ã‚‚å«ã‚?ã§ã€?¸æŠžæ•°ãŒï¼‘ä»¶ã®ã¿ã®å ´å?
415             *   COUNT_0 :
416             *       ãれ以外ã§ã€?¸æŠžæ•°ãŒï¼ä»¶ã®å ´å?
417             *   COUNT_N :
418             *       ãれ以外ã§ã€?¸æŠžæ•°ãŒï¼‘件以上ã?å ´åˆã?ã¾ãŸã?ã€ãã®ä»–ã?
419             *
420             * @og.rev 3.5.5.2 (2004/04/02) æ–°è¦ä½œæ??šisJspPrefix( String page ) ã®ä»£ç”¨ã§ã™ã?
421             * @og.rev 4.0.0.0 (2007/05/23) useTableData ã®æ›¸ãæ›ãˆã‚’中止ã—ã¾ã™ã?
422             * @og.rev 4.0.0.0 (2007/11/12) éžé¸æŠžçŠ¶æ…‹ã§ã‚‚リãƒ?‚¤ãƒ¬ã‚¯ãƒˆå¯èƒ½ãªãƒ•ラグ(isRedirectCheck)を追åŠ?
423             *
424             * @param   page        判定ã™ã‚‹è»¢é€å?アドレス
425             *
426             * @return  FORWARD,REDIRECT,COUNT_0,COUNT_N ã®ã?¡ã€ã©ã‚Œã‹
427             */
428            private int selectResponseMethod( final String page ) {
429                    if( page == null ) { return FORWARD; }
430    
431                    int adrs = page.indexOf( ".jsp" );
432    
433                    if( adrs >= 0 && page.lastIndexOf( '/',adrs ) < 0 ) {
434    //                      useTableData = false;           // ç¾æ™‚点ã§ã® forward ã§ã¯ã€ä½¿ç”¨ã§ãã¾ã›ã‚“ã€?
435                            return FORWARD;
436                    }
437    //              else if( adrs < 0 || !useTableData ) {
438    //              else if( adrs < 0 ) {
439                    else if( adrs < 0 || !isRedirectCheck ) { // 4.0.0.0 (2007/11/12) éžé¸æŠžãƒªãƒ?‚¤ãƒ¬ã‚¯ãƒˆè¨±å¯ãƒ•ラグ追åŠ?
440    //                      useTableData = false;           //      jsp 以外ã§ã¯ã€ä½¿ç”¨ã§ãã¾ã›ã‚“ã€?
441                            return REDIRECT;
442                    }
443                    else if( rowCount == 1 ) {
444                            return REDIRECT;
445                    }
446                    else if( rowCount == 0 ) {
447                            return COUNT_0;
448                    }
449                    else {
450                            return COUNT_N;
451                    }
452            }
453    
454            /**
455             * ã€TAGã€‘é¸æŠžè¡Œãƒ‡ãƒ¼ã‚¿ã‚’ã?URL 引数ã«è¿½åŠ?™ã‚?true)ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
456             *
457             * @og.tag
458             * é¸æŠžã•れ㟠DBTableModel 㮠行データをãã®ã¾ã¾ã€URL 㮠引数ã«è¿½åŠ?—ã¦
459             *      転é€ã™ã‚‹ã‹ã©ã?‹ã‚’指定ã§ãるフラグã€useTableData 属æ?を追åŠ?—ã¾ã™ã?
460             *      åˆæœŸå€¤ã¯ã€false (äº’æ›æ€§ã®ç‚º)ã§ã™ã?
461             *      ãªãŠã?SubmitTag(サブミãƒ?ƒˆãƒœã‚¿ãƒ³ã‚¿ã‚°)ã§ã€gamenIdãŒæŒ‡å®šã•れãŸå ´åˆã?
462             *      ã¤ã¾ã‚Šã?ä»–ã?フォルãƒ?«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã•れãŸå ´åˆã?ã¿ã€æœ‰åйã«ãªã‚Šã¾ã™ã?
463             *      自åˆ??身ã®ãƒ•ォルãƒ??ã§ã¯ã€forward ãŒä½¿ç”¨ã•れるãŸã‚ã?使ãˆã¾ã›ã‚“ã€?
464             *
465             * @og.rev 3.5.5.2 (2004/04/02) æ–°è¦è¿½åŠ?
466             * @og.rev 3.5.5.8 (2004/05/20) å†?ƒ¨ä»®æƒ³ãƒªã‚¯ã‚¨ã‚¹ãƒ?Map ã‚’å‚ç…§ã§ãるよã†ã«ã™ã‚‹ã€?
467             *
468             * @param       flag é¸æŠžè¡Œãƒ‡ãƒ¼ã‚¿ã‚’ä½¿ç”¨ã™ã‚‹(true)/ã—ãªã?false)
469             */
470    //      public void setUseTableData( final String flag ) {
471    //              useTableTemp = nval( getRequestParameter( flag ),useTableTemp );
472    //      }
473    
474            /**
475             * ã€TAGã€?通常使ã?¾ã›ã‚“)sessionã‹ã‚‰æ‰?¾—ã™ã‚?DBTableModelオブジェクトã? IDã€?
476             *
477             * @og.tag
478             * 表示処ç?¾Œã«??å†?ƒ¨ãƒã‚¤ãƒ³ã‚¿ã‚’æ›¸ãæ›ãˆãŸ)DBTableModelオブジェクトを
479             * åŒã˜ã‚­ãƒ¼ã§ã€sessionã«ç™»éŒ²ã—ã¾ã™ã?
480             * åˆæœŸå€¤ã¯ã€HybsSystem.TBL_MDL_KEY ã§ã™ã?
481             *
482             * @og.rev 3.5.5.2 (2004/04/02) æ–°è¦è¿½åŠ?
483             * @og.rev 3.5.5.8 (2004/05/20) å†?ƒ¨ä»®æƒ³ãƒªã‚¯ã‚¨ã‚¹ãƒ?Map ã‚’å‚ç…§ã§ãるよã†ã«ã™ã‚‹ã€?
484             *
485             * @param       id sessionã‹ã‚‰æ‰?¾—ã™ã‚‹æ™‚ã® ID
486             */
487            public void setTableId( final String id ) {
488                    // 注æ„?引数ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ãŒç„¡ã‘れã°ã€è?åˆ??身({@XXX}å½¢å¼?ã‚’å?ã‚»ãƒ?ƒˆã™ã‚‹ã€?
489                    tableIdTemp   = nval( getRequestParameter( id ),id );
490            }
491    
492            /**
493             * æŒ?®šã?スコープã?å†?ƒ¨ã‚­ãƒ£ãƒ?‚·ãƒ¥æƒ??ã«ã€DBTableModel ã®é¸æŠžã•れãŸå€¤ã‚’登録ã—ã¾ã™ã?
494             *
495             * è¤?•°é¸æŠžè¡ŒãŒå­˜åœ¨ã™ã‚‹å ´åˆã?ã€å?頭行を処ç?—ã¾ã™ã?ãŸã ã—ã?action="APPEND"ã®
496             * å ´åˆã?ã€separator属æ?ã§æŒ?®šã•ã‚ŒãŸæ–?­—を使用ã—ã¦ã€??çµã—ã¾ã™ã?
497             *
498             * @og.rev 3.5.5.2 (2004/04/02) æ–°è¦ä½œæ?
499             * @og.rev 3.5.5.5 (2004/04/23) URLã«é€£çµã™ã‚‹DBTableModelã®ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã?
500             * @og.rev 3.8.0.4 (2005/08/08) dbkeys ã?null ã®å ´åˆã«å…¨ä»¶å–å¾—ã—ã¦ã?Ÿå‡¦ç?‚’中止ã—ã¾ã™ã?
501             * @og.rev 3.8.0.8 (2005/10/03) dbkeys ã?null ã®å ´åˆã«å…¨ä»¶å–å¾—ã—ã¦ã?Ÿå‡¦ç?‚’復活ã—ã¾ã™ã?
502             * @og.rev 3.8.5.1 (2006/04/28) vals="[カラãƒ?]" ã¨ã?†å¼•æ•°ã‚’å?ç?§ãる機è?を追åŠ??
503             * @og.rev 3.8.5.1 (2006/04/28) dbkeys ã?null ã®å ´åˆã«å…¨ä»¶å–å¾—ã™ã‚‹ã‹ã©ã?‹ã‚?COMMON_FORWARD_DBKEYS_NULL_ALL ã§æŒ?®šã—ã¾ã™ã?
504             * @og.rev 4.0.0.0 (2007/05/23) tableId ã‚’ã“ã®ãƒ¡ã‚½ãƒ?ƒ‰å†?§æ±‚ã‚ã¾ã™ã?
505             *
506             * @return      DBTableModelã®é¸æŠžã•れãŸå€¤ã®æ–?­—å?
507             */
508            private String getTableUrlData() {
509                    String tableId = nval( getSubmitRequestParameter( tableIdTemp ),HybsSystem.TBL_MDL_KEY );
510    
511                    DBTableModel table = (DBTableModel)getSessionAttribute( tableId );
512    
513                    String dbkeysUrl  = "";
514                    String tblkeysUrl = "";
515    
516                    if( table != null ) {
517                            String[] keys = null;
518                            String[] vals = null;
519                            if( dbkeys != null ) {
520                                    keys = StringUtil.csv2Array( dbkeys );
521                                    vals = new String[keys.length];
522                                    for( int i=0; i<keys.length; i++ ) {
523                                            int clmNo = table.getColumnNo( keys[i] );
524                                            vals[i] = table.getValue(rowNo,clmNo);
525                                    }
526                            }
527    
528                            dbkeysUrl = XHTMLTag.urlEncode( keys, vals );
529    
530                            // 3.8.5.1 (2006/04/28) vals="[カラãƒ?]" ã¨ã?†å¼•æ•°ã‚’å?ç?§ãる機è?を追åŠ??
531                            int size = submitTableMap.size();
532                            if( size > 0 ) {
533                                    @SuppressWarnings("rawtypes")
534                                    Map.Entry[] entry = submitTableMap.entrySet().toArray( new Map.Entry[size] );
535    
536                                    String[] tblkeys = new String[size];
537                                    String[] tblvals = new String[size];
538    
539                                    for( int i=0; i<size; i++ ) {
540                                            tblkeys[i]  = (String)entry[i].getKey();
541                                            String temp = (String)entry[i].getValue();
542                                            int clmNo = table.getColumnNo( temp );
543                                            tblvals[i] = table.getValue( rowNo,clmNo );
544                                    }
545                                    tblkeysUrl = XHTMLTag.urlEncode( tblkeys, tblvals );
546                            }
547                    }
548    
549                    String rtn = dbkeysUrl;
550    
551                    if( tblkeysUrl.length() > 0 ) {
552                            if( rtn.length() > 0 ) {
553                                    rtn += "&" + tblkeysUrl;
554                            }
555                            else {
556                                    rtn = tblkeysUrl ;
557                            }
558                    }
559                    return rtn ;
560            }
561    
562            /**
563             * ã€TAG】DBキーをCSV å½¢å¼ã§ã‚»ãƒ?ƒˆã—ã¾ã™ã?
564             *
565             * @og.tag
566             * URI ã®å¼•æ•°ã«ã‚»ãƒ?ƒˆã™ã‚‹ã‚­ãƒ¼ã‚?CSV å½¢å¼ã§ã‚»ãƒ?ƒˆã—ã¾ã™ã?
567             * ã“ã“ã®æŒ?®šã?,DBTableModel 上ã?ãƒ??ã‚¿ã‚’å–り込ã¿ã¾ã™ã?
568             *
569             * @og.rev 3.5.5.5 (2004/04/23) URLã«é€£çµã™ã‚‹DBTableModelã®ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã?
570             * @og.rev 3.5.5.8 (2004/05/20) å†?ƒ¨ä»®æƒ³ãƒªã‚¯ã‚¨ã‚¹ãƒ?Map ã‚’å‚ç…§ã§ãるよã†ã«ã™ã‚‹ã€?
571             *
572             * @param       key DBキー(CSV 形�
573             */
574            public void setDbkeys( final String key ) {
575                    // 注æ„?引数ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ãŒç„¡ã‘れã°ã€è?åˆ??身({@XXX}å½¢å¼?ã‚’å?ã‚»ãƒ?ƒˆã™ã‚‹ã€?
576                    dbkeysTemp = nval( getRequestParameter( key ),key ) ;
577            }
578    
579            /**
580             * å†?ƒ¨ã®ä»®æƒ³ãƒªã‚¯ã‚¨ã‚¹ãƒ?Map よりã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‘ラメータより値を設定ã—ã¾ã™ã?
581             *
582             * submitã‚¿ã‚°ã® keys,vals よりé€ä¿¡ã•れãŸãƒªã‚¯ã‚¨ã‚¹ãƒˆå?ã¯ã€ã“ã®ã‚¯ãƒ©ã‚¹ã§
583             * 処ç?•れã?å†?ƒ¨ã®ä»®æƒ³ãƒªã‚¯ã‚¨ã‚¹ãƒ?Map ã«ä¿å­˜ã•れã¾ã™ã?
584             * 通常ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆè¨­å®šæ™‚点ã§ã¯ã€ã“ã®å€¤ã¯å–り出ã™ã“ã¨ãŒå?æ¥ãªã?‚ºã€?
585             * Map ã«ä¿å­?getForwardURI 処ç?§è¨­å®?ã•れãŸå¾Œã«ã€å¼•ã出ã—ã¾ã™ã?
586             *
587             * @og.rev 3.5.5.8 (2004/05/20) æ–°è¦ä½œæ?
588             *
589             * @param       key        DBキー(CSV 形�
590             *
591             * @return      仮想リクエスãƒ?Map ã‚’åæ˜?•ã›ãŸã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆå?
592             */
593            private String getSubmitRequestParameter( final String key ) {
594                    String rtn = key;
595    
596                    // 変数ã?"{@XXXX}" ã®å ´åˆã?ã¿å¯¾å¿?
597                    if( key != null && key.startsWith( "{@" ) && key.charAt(key.length()-1) == '}' ) {
598                            rtn = submitRequestMap.get( key.substring( 2,key.length()-1 ) );
599                    }
600    
601                    return rtn;
602            }
603    
604            /**
605             * ã€TAG】éžé¸æŠžçŠ¶æ…‹ã?å ´åˆã«forwardを許å¯ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
606             *
607             * @og.tag
608             * åˆæœŸå€¤ã¯trueãŒè¨­å®šã•れã¦ã?¾ã?
609             * falseã«ã™ã‚‹ã¨è¨±å¯ã•れã¾ã?
610             *
611             * @og.rev 4.0.0.0 (2007/11/09) æ–°è¦ä½œæ?
612             *
613             * @param       flag    éžé¸æŠžçŠ¶æ…‹ã?forwardã‚’è¨±å¯ [true:ä¸è¨±å¯/false:許å¯]
614             */
615            public void setUseRedirectCheck(final String flag) {
616                    isRedirectCheck = nval( getRequestParameter( flag ),isRedirectCheck );
617            }
618    
619    //      private boolean isUseRedirectCheck() {
620    //              return isRedirectCheck;
621    //      }
622    
623            /**
624             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºæ›¸ãè¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
625             *
626             * @og.rev 4.3.1.1 (2008/08/23) æ–°è¦è¿½åŠ?
627             * @serialData
628             *
629             * @param       strm    ObjectOutputStreamオブジェク�
630             */
631            private void writeObject( final ObjectOutputStream strm ) throws IOException {
632                    strm.defaultWriteObject();
633            }
634    
635            /**
636             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºèª­ã¿è¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
637             *
638             * ã“ã“ã§ã¯ã€transient 宣è¨?•れãŸå†?ƒ¨å¤‰æ•°ã®å†??åˆæœŸåŒ–ãŒå¿?¦ãªãƒ•ィールドã?ã¿è¨­å®šã—ã¾ã™ã?
639             *
640             * @og.rev 4.3.1.1 (2008/08/23) æ–°è¦è¿½åŠ?
641             * @serialData
642             *
643             * @param       strm    ObjectInputStreamオブジェク�
644             * @see #release2()
645             */
646            private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
647                    strm.defaultReadObject();
648                    submitRequestMap        = new HashMap<String,String>();
649                    submitTableMap          = new HashMap<String,String>();
650            }
651    
652            /**
653             * ã“ã?オブジェクトã?æ–?­—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
654             * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
655             *
656             * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?­—å?表ç¾
657             */
658            @Override
659            public String toString() {
660                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
661                                    .println( "VERSION"                     ,VERSION                )
662                                    .println( "rowCount"            ,rowCount               )
663    //                              .println( "useTableData"        ,useTableData   )
664    //                              .println( "tableId"                     ,tableId                )
665                                    .println( "rowNo"                       ,rowNo                  )
666                                    .println( "dbkeys"                      ,dbkeys                 )
667    //                              .println( "useTableTemp"        ,useTableTemp   )
668                                    .println( "tableIdTemp"         ,tableIdTemp    )
669                                    .println( "dbkeysTemp"          ,dbkeysTemp             )
670                                    .println( "Other..."            ,getAttributes().getAttribute() )
671                                    .fixForm().toString() ;
672            }
673    }