해결방법 : innerHTML이 아닌 appendChild를 통해서 해결..



출처 : http://www.nextstep.co.kr/m/post/37




알 수 없는 런타임 오류가 발생할 수 있는 가능성은 무지하게 많지만, IE에서는 발생하고 FireFox에서는 발생하지 않는다면 읽기전용 속성 태그에 ID를 부여하고 innerHTML을 사용했을 가능성이 있다.


** IE에서 COL COLGROUP FRAMESET HTML STYLE TABLE TBODY TFOOT THEAD TITLE TR 개체에서는 읽기전용이고 그 외의 개체에서는 모두 읽기/쓰기이다. 디폴트값은 없다.




출처 : http://rabbitchris.tistory.com/636



a.jsp 가 아래와 같이 구성되어 있다 하자.
<div id="idA" ...>...</div>

이곳에 Ajax 를 통해 b.jsp 를 idA 의 innerHTML 로 넣을때 b.jsp 에 아래와 같은 코드가 있으면 IE 에서 런타임 오류 발생.
<div ...>...</div>
<span ...>...</span>

그런데 오류가 났던 동일한 div 나 span 태그를 table 태그로 감싸주면 오류가 나지 않는다
<table><tr><td>
  <div ...>...</div>
  <span ...>...</span>
</td></tr></table>

왜 그런걸까..?
table 대신에 다른 div 나 span 을 사용해도 마찬가지로 에러..
ul/ol 과 li 조합으로 해도 에러..
dl 과 dt, dd 로 해도 에러..

다른 웹브라우저에서도 에러가 날까..?

Posted by 삽지리
,

http://wiki.apache.org/tomcat/MemoryLeakProtection

Posted by 삽지리
,

출처 : http://blog.daum.net/wetet/1820


------------

심각: The web application [/gateway] created a ThreadLocal with key of type [com.sun.xml.bind.v2.runtime.Coordinator$1] 
(value [com.sun.xml.bind.v2.runtime.Coordinator$1@15151aa]) 
and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@1c87093]) 
but failed to remove it when the web application was stopped. This is very likely to create a memory leak.

 

리눅스에 Tomcat 6.0.30버전을 설치했다. 그리고 gateway라는 웹어플이 올라가 있는 상태이다. jaxws를 이용한 웹서비스를 하고 있는데 Soap통신을 하고 나서 톰캣을 shutdown해보면 위와 같은 메시지가 나오게 된다. 그냥 해석해보면 틈캣이 종료할때 어떤 클래스들을 메모리에서 제거할 수 없다는 것이다.

구글링을 하다보면 이상한 말들이 많이 나온다. 코드를 잘못짰다, 톰캣버전에서 나는 오류다, 기타 등등...

하지만 아주 단순하게 해결을 봤다.

 

현재 jar파일들이 $TOMCAT_HOME/webapps/gateway/WEB-INF/lib에 들어있는데

이것들을 $TOMCAT_HOME/lib로 옮겨줬더니 위와 같은 에러가 나지 않았다.

 

아마도 웹어플 딴에서 xml을 파싱하기 위해 사용한 jaxb모듈에서 뭔가 스태틱으로 클래스를 가지고 있는 것 같은데 톰캣에서는 각 어플들에서 로드한 클래스에 대해서는 접근권한이 없는 모양인가보다. 하지만 톰캣이 자기한테 딸린 웹어플에 대한 권한이 없다라...흠...

아마도 톰캣 버그가 아닐까 싶다.

Posted by 삽지리
,

BufferedReader in = new BufferedReader( new InputStreamReader(new FileInputStream(processFilePath+mappingFileName),"euc-kr"));


String s;


     while ((s = in.readLine()) != null) {

     String[] str = s.split(sep);

     //System.out.println("s:"+ new String(((String)s).getBytes("MS949"),"utf-8"));

     if(str.length == 3){

     //System.out.println("name:"+new String(((String)str[0]).getBytes("euc-kr"),"utf-8"));

     System.out.println("name:"+str[0]);

     System.out.println("onnaraId:"+str[1]);

     System.out.println("email:"+str[2]);

     }

     }

Posted by 삽지리
,

bindingResult.addError(new FieldError("dataVO","fromDt","에러메시지") );

와 같이 해주면 된다.

Posted by 삽지리
,

만들게 된 이유는 form:select에서 사용하기 위함
form:select에서 map형태는 getter setter가 없어서 사용하려면 에러가 난다.
그래서 원래의 egovmap을 확장하여 만듬.




public class EgovTagMap extends EgovMap {


public EgovMap getTagMap(){

return this;

}


}





=========================== 사용방법==================



<form:select path="변수명" items="${itemList}" itemLabel="tagMap['컬럼명']" itemValue="tagMap['컬럼명']">

            </form:select>




Posted by 삽지리
,

form:hidden 등을 사용하여 input 태그를 사용시 path 명이 그대로 id와 name이 된다.
name이 다른 폼에 있어 중복되는 문제는 상관없으나 id가 중복되는것은 문제가 있음
아예 없애려면 id="" 이라고 넣어주면 없어진다.

Posted by 삽지리
,

관련 에러메시지

Errors running builder 'JavaScript Validator' on project

참조 : http://vicki.tistory.com/998

결론은

해결책은 프로젝트의 속성에서 Builders > JavaScript Validator 체크를 해제하면 됩니다.

Posted by 삽지리
,


전자정부 사용시 로그가 잘 안나오거나 아예 진짜 많이 나오게됨


그래서 다음과 같이 수정함


 <logger name="java.sql" additivity="false">

    <level value="DEBUG"/>

        <appender-ref ref="console"/>

    </logger>


    <logger name="egovframework" additivity="false">

        <level value="DEBUG"/>

        <appender-ref ref="console"/>

    </logger>



<!-- 이게 포인트 -->

<logger name="org.springframework" additivity="false">

<level value="ERROR" />

<appender-ref ref="console" />

</logger>



<!-- 에러내용을 보기위한 것 익셉션 리졸버가 여기에 있음 -->

<logger name="org.springframework.web.servlet.DispatcherServlet" additivity="false">

<level value="DEBUG" />

<appender-ref ref="console" />

</logger>



-------------------------------------------


로그를 에러레벨로 바꿔도 에러가 안보이게 되는 문제가 있는데

이건 DispatcherServlet에서 익셉션을 처리해버리면서 error레벨이 아닌 debug레벨로 처리해서 생기는 문제

이렇게 된 이유는 다..

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">


이걸 사용하기 떄문임..


암튼 

<logger name="org.springframework.web.servlet.DispatcherServlet" additivity="false">

<level value="DEBUG" />

<appender-ref ref="console" />

</logger>

이 설정을 통해서 좀 더 윤택한 개발을 하도록 한다.

Posted by 삽지리
,

[내용수정]: 

우선 에러가 났으며 에러내용은 다음과 같다.

 

### Error querying database.  Cause: java.lang.NumberFormatException: For input string: "N"
### Cause: java.lang.NumberFormatException: For input string: "N"

 

아래 예시를 보자...

 

<if test="searchKey.colName == 'content'">

이경우에는 문제가 없다

 

 

<if test="searchKey.useYn == 'Y'">

 

이경우에는 문제가 있다

 

무슨차이일가.

 

바로 문자가 한개이냐 아니냐의 차이..

문자가 하나일 경우 싱글쿼테이션으로 감싸면 숫자로 캐릭터로 인식한다.

그러므로...

 

<if test='searchKey.useYn == "Y"'>

 

처럼

더블쿼테이션을 쓸 필요가 있다. 주의해서 다 수정하자..

 

-----------

ibatis

-----------

<isEqual property="paramValue" compareValue="N">

-----------

mybatis

-----------

<if test="findUseYn == 'N'" >

 

 

 

 

*********************************

ibatis

-----------

<isNotEqual property="paramValue" compareValue="N">

-----------

mybatis

-----------

<if test="paramValue != 'N'" >

 

 

 

 

*********************************

ibatis

-----------

<isNotEmpty property="paramValue" >

-----------

mybatis

-----------

<if test="paramValue != null and paramValue != ''   " >

 

 

 

*********************************

ibatis

-----------

<isEmpty property="paramValue" >

-----------

mybatis

-----------

<if test="paramValue == null or paramValue == ''   " >

 

eq라던가 ne라던가 하는 방법이 추가로 있지만..

그냥 저걸로만 정리해둔다.

Posted by 삽지리
,