게시판을 이용해 주셔서 감사합니다.
다음양식에 맞게 입력해주세요.
* 고객시스템명 : 한국수자원공사
* 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";