iBatis에서 Like 검색처리방법....

Posted 2007. 12. 6. 14:35
iBatis의 변수처리는 #value#  와 같은식이 된다.
그래서 아무생각 없이 like '%#value#%'  했더니 대번 에러난다.

엥..... 무슨 방법 없을까 고민쪼금 하다가.. 구글로 바로 검색들어갔다.
iBatis LIKE 검색 했더니....

오라클은 like '%'||#value#||'%' 로 하랜다...
우린 Mysql이니까..
like concat('%','#value#','%') 와 같이 하면 되겠다...

ㅎㅎㅎ 잘 된다.


이전 JSTL을 사용하기 이전엔 자바의 replace메소드 하나로 모두 해결했었다.

<%=content.replaceAll("<","&lt;").replaceAll("\r\n","<br>") %>

그런데 JSTL을 사용하는 지금은..... 어떻게 해야하나..

<c:out ....... escapeXml="true"/> 로 일단 "<" 처리는 끝났고...
엔터값에 대한 <br/>처리를 해야 하는데...
<fn:replace />를 하면 되겠다 시펐는데 안된다.
이유? 몰겠다...
그래서 결국 찾은것은....

jsp 선언부쪽에다가
<%pageContext.setAttribute("crlf", "\r\n"); %>이거 넣고...

crlf를 <fn:replace 하니까 된다....

${fn:replace(record[4],crlf,"<br/>")}  <==요렇게 말이다.

헉!! 그런데 Ajax를 통해 inset 한 부분에서는 안된다... 왜그럴까?
삽질을 통해서 알게 된 사실은...

캐리지 리턴은 없고 라인피드만 있다는것...
그래서 그부분을 위해서 한줄 더 추가...
<%pageContext.setAttribute("lf", "\n"); %>
그리고 라인피드 없이 캐리지리턴만 나올경우를 대비해서..
<%pageContext.setAttribute("cr", "\r"); %>
요것도 추가했다..

맞는건지 모르겠지만 암튼 그래도 잘 나온다.


발췌  : Ajax Programming 기초부터 중급까지 - 가메출판사, 최범균

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<head>
 <meta http-equiv="content-type" content="text/html; charset=euc-kr" />
 <title>CSS Class 변경</title>
 <script type="text/javascript" src="ajax.js"></script>
 <script type="text/javascript">
 window.onload = function() {
  var redRadio = document.getElementById("red");
  var blueRadio = document.getElementById("blue");
  var blackRadio = document.getElementById("black");
 
  ajax.Event.addListener(redRadio, "click",
   ajax.Event.bindAsListener(doClickOnRadio, redRadio));
  ajax.Event.addListener(blueRadio, "click",
   ajax.Event.bindAsListener(doClickOnRadio, blueRadio));
  ajax.Event.addListener(blackRadio, "click",
   ajax.Event.bindAsListener(doClickOnRadio, blackRadio));
 }
 
 function doClickOnRadio() {
  var view = document.getElementById("view");
  alert(this.value);
  view.className = this.value;
 }
 
 function fncChangeBlue()
 {
  var view = document.getElementById("myView");
  view.className = 'myBlack';
 }
 </script>
 <style type="text/css">
 div.red {
  font-weight: bold;
  color: red;
  background-color: #00FFFF;
 }
 div.blue {
  font-weight: bold;
  color: blue;
  background-color: #FFFF00;
 }
 div.black {
  font-weight: bold;
  color: #000000;
  background-color: #CCCCCC;
 }
 .myBlack {
  font-weight: bold;
  color: #000000;
  background-color: #CCCCCC;
 }
 </style>
</head>
<body>
<div id="view" class="black">스킨을 변경해보세요.</div>
<form name="f">
<input type="radio" name="skinName" id="red" value="red" />RED
<input type="radio" name="skinName" id="blue" value="blue" />BLUE
<input type="radio" name="skinName" id="black" value="black" checked="checked" />BLACK
<div id="myView">
<a href="javascript:fncChangeBlue()">변경하기.</a>
</div>
</form>
</body>
</html>



« PREV : 1 : ··· : 49 : 50 : 51 : 52 : 53 : 54 : 55 : ··· : 61 : NEXT »