• 고객센터
  • 교육
  • 매뉴얼
  • 데모
  • 제품소개
조회 수 : 2000
2011.08.11 (16:56:47)
게시판을 이용해 주셔서 감사합니다.
다음양식에 맞게 입력해주세요.

* 고객시스템명 : 한국수자원공사
* GAUCE 버전 : 4.0
* WAS 종류(WebLogic 등등) : Jeus
* DB 종류 : Oracle10g
* 문의 유형(질문/요청/참조) :
* 내용 :

붙임과 같이 [총사업비]라는 시트가 사업기간을 입력하면 년도별로 컬럼이 증가됩니다.

사업기간을 입력하지 않고 전송하면 제대로 전송이 되는데, 사업기간을 입력하여 컬럼을 가변적으로

늘리고 전송하려고 하면 String index out of range: -1 오류가 발생합니다.

이 부분을 어떻게 처리해야 할지 문의드립니다.


===(.. 소스  ==========================================
        public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
  {
    String nextUrl = "";
    String cmdStr  = req.getParameter("cmd") == null ? "" : req.getParameter("cmd");

    ParameterHelper   param = new ParameterHelper();
    ServletContext        sc  = this.getServletContext();
    RequestDispatcher  rd  = null;
    PrintWriter              out = res.getWriter();
    HttpSession           hs  = req.getSession();

    GauceInputStream   gis  = ((HttpGauceRequest) req).getGauceInputStream();     <<<====== 58 line
    GauceOutputStream gos = ((HttpGauceResponse) res).getGauceOutputStream();

    boolean result  = false;
    String  empcode = hs.getAttribute("empcode") == null ? "" : (String)hs.getAttribute("empcode");
    String  userId  = hs.getAttribute("userid")  == null ? "" : (String)hs.getAttribute("userid");

    System.out.println("[CostCS-service] cmd ==> [" + cmdStr + "]");

    try
    {
       .....

=== (.. 오류내용   =============================================================
[2011.08.11 14:57:15][1][0_481] [container1-65] fail to execute servlet : CostCS
<<__Exception__>>
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.checkBounds(String.java:368)
        at java.lang.String.<init>(String.java:404)
        at com.gauce.io.bin.A.A(Unknown Source)
        at com.gauce.io.bin.A.A(Unknown Source)
        at com.gauce.filter.HttpGauceRequestWrapper.getGauceInputStream(Unknown Source)
        at promate.cost.CostComp.servlet.CostCS.service(CostCS.java:58)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at jeus.servlet.engine.ServletWrapper.executeServlet(ServletWrapper.java:313)
        at jeus.servlet.filter2.FilterChainImpl.internalDoFilter(FilterChainImpl.java:139)
        at jeus.servlet.filter2.FilterChainImpl.doFilter(FilterChainImpl.java:91)
        at com.gauce.filter.GauceFilter.doFilter(Unknown Source)
        at jeus.servlet.filter2.FilterChainImpl.internalDoFilter(FilterChainImpl.java:122)
        at jeus.servlet.filter2.FilterChainImpl.doFilter(FilterChainImpl.java:91)
        at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:195)
        at jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:181)


===========================================
  //Grid를 재정의 하고 속성을 지정해 준다.
  var strGridFormat = "";  //Grid Format용 변수
  var strGridHeader = "";  //Grid Header 재설정용 변수

  //고정 Grid Column 정의(앞부분)
  strGridFormat = strGridFormat + "<C> id=TERM_FR        name=시작년도    width=80   sort=true  show=false  HeadBgColor=#ACD7ED  edit={IF(Left(L_PROC_CD, 2)='00','false','false')}</C>";
  strGridFormat = strGridFormat + "<C> id=TERM_TO        name=종료년도    width=80   sort=true  show=false  HeadBgColor=#ACD7ED  edit={IF(Left(L_PROC_CD, 2)='00','false','false')}</C>";
  strGridFormat = strGridFormat + "<FG>                  name=구분        width=240  sort=true  show=true   HeadBgColor=#ACD7ED";
  strGridFormat = strGridFormat + "    <C> id=L_PROC_CD  name=대공정코드  width=80   sort=true  show=false  HeadBgColor=#ACD7ED  edit={IF(Left(L_PROC_CD, 2)='00','false','false')}</C>";
  strGridFormat = strGridFormat + "    <C> id=L_PROC_NM  name=대공정      width=120  sort=true  show=true   HeadBgColor=#ACD7ED  edit={IF(Left(L_PROC_CD, 2)='00','false','true')}  align={IF(Left(L_PROC_CD, 2)='00','center','left')}  EditStyle=Combo Data='<총사업비>,공사비,보상비,조사설계비,관리비 및 기타,운영관리비,시설개량비,EPC비용,개발비용,기타(총사업비),<재원분담>,국고(대행),국고(출자),국고(보조),자체자금,지자체,기타(재원분담)'</C>";
  strGridFormat = strGridFormat + "    <C> id=S_PROC_CD  name=소공정코드  width=80   sort=true  show=false  HeadBgColor=#ACD7ED  edit={IF(Left(L_PROC_CD, 2)='00','false','false')}</C>";
  strGridFormat = strGridFormat + "    <C> id=S_PROC_NM  name=소공정      width=120  sort=true  show=true   HeadBgColor=#ACD7ED  edit={IF(Len(L_PROC_NM)>0,'false','true')}  HeadColor=#000000  align=left  bgcolor={decode(currow-(currow/2)*2,0,'#F1F1F1',1,'#FFFFFF')}  sumbgcolor='#f0f0f0'  color=#002759 </C>";
  strGridFormat = strGridFormat + "</FG>";
  strGridFormat = strGridFormat + "<FG>                  name=총사업비    width=100  sort=true  show=true  HeadBgColor=#ACD7ED";
  strGridFormat = strGridFormat + "    <C> id=PROC_AMT   name=현행기준    width=100  sort=true  show=true  HeadBgColor=#ACD7ED  edit={IF(Len(S_PROC_NM)>0,'true','false')}  HeadColor=#000000  align=right bgcolor={decode(currow-(currow/2)*2,0,'#F1F1F1',1,'#FFFFFF')}  sumbgcolor='#f0f0f0'  color=#002759 </C>";
  strGridFormat = strGridFormat + "</FG>";

  //고정 Grid Column Header정의(앞부분)
  strGridHeader = strGridHeader + ",TERM_FR:STRING(4):NORMALKEY";
  strGridHeader = strGridHeader + ",TERM_TO:STRING(4):NORMALKEY";
  strGridHeader = strGridHeader + ",L_PROC_CD:STRING(4):NORMALKEY";
  strGridHeader = strGridHeader + ",L_PROC_NM:STRING(40):NORMALKEY";
  strGridHeader = strGridHeader + ",S_PROC_CD:STRING(4):NORMALKEY";
  strGridHeader = strGridHeader + ",S_PROC_NM:STRING(40)";
  strGridHeader = strGridHeader + ",PROC_AMT:INT(16):NORMALKEY";

  //동적 Grid Column 정의(사업기간별 예/결산 부분)
  for ( var i = sStartYear; i <= sEndYear; i++ ) {
    //Grid 정의
    strGridFormat = strGridFormat + "<R>";
    strGridFormat = strGridFormat + "    <G>                   name="+ i +"년도  width=200  sort=true  show=true  HeadBgColor=#ACD7ED";
    strGridFormat = strGridFormat + "        <C> id="+ i +"_BUDG_AMT   name=예산금액  edit=numeric  width=100  sort=true  show=true  edit={IF(Len(S_PROC_NM)>0,'true','false')}  HeadBgColor=#ACD7ED  HeadColor=#000000  align=right  bgcolor={decode(currow-(currow/2)*2,0,'#F1F1F1',1,'#FFFFFF')}  sumbgcolor='#f0f0f0'  color=#002759 </C>";
    strGridFormat = strGridFormat + "        <C> id="+ i +"_CLAC_AMT   name=결산금액  edit=numeric  width=100  sort=true  show=true  edit={IF(Len(S_PROC_NM)>0,'true','false')}  HeadBgColor=#ACD7ED  HeadColor=#000000  align=right  bgcolor={decode(currow-(currow/2)*2,0,'#F1F1F1',1,'#FFFFFF')}  sumbgcolor='#f0f0f0'  color=#002759 </C>";
    strGridFormat = strGridFormat + "    </G>";
    strGridFormat = strGridFormat + "</R>";
    //Header 정의
    strGridHeader = strGridHeader + "," + i + "_BUDG_AMT:INT(16)";
    strGridHeader = strGridHeader + "," + i + "_CLAC_AMT:INT(16)";
  }

  //고정 Grid Column 정의(뒷부분)
  strGridFormat = strGridFormat + "<C> id=RMD_BUDG_AMT  name=이후예산    width=100  sort=true  show=true  HeadBgColor=#ACD7ED  edit={IF(Left(L_PROC_CD, 2)='00','false','false')}  HeadColor=#000000  align=right  bgcolor={decode(currow-(currow/2)*2,0,'#F1F1F1',1,'#FFFFFF')}  sumbgcolor='#f0f0f0'  color=#002759 </C>";
  strGridHeader = strGridHeader + ",RMD_BUDG_AMT:INT(16):NORMALKEY";
 
Tag List
XE Login