..
DEV (257)
prototype.js에서 setStyle() 사용하기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Prototype Framework에서는 Element에 css가 아닌 자바스크립트로 스타일을 적용할 수 있게 하는 setStyle()이라는 메서드를 제공하고 있다. 물론 Element.style.display 같은 식으로 스타일에 접근하거나 할 수 있지만 setStyle()의 좋은 점은 css에서 적용하는 것처럼 스타일을 한꺼번에 적용할 수 있다.

Element의 Selector는 당연히 이것저것 있지만 가장 기본적인 getElementById를 가지고 설명하자.

(Language : javascript)
  1. $("elementID").setStyle({
  2.     'position': 'relative',
  3.     'width':    '100px',
  4.     'height':     '100px',
  5.     'overflow': 'hidden',
  6.     'border':   'solid 1px #808080'
  7. });

마치 CSS를 사용한 것처럼 익숙한 스타일로 한꺼번에 스타일을 적용할 수 있다. px를 사용할 때 100px처럼 붙혀서 쓰는 것이 좋다. px앞에 공백이 있으면 브라우저에 따라 안 먹을 수 있다.

스타일 프로퍼티쪽은 꼭 홑따옴표(')로 묶어주지 않아도 상관없기는 하지만 float처럼 reserved word와 겹치는 경우에는 문제가 생길 수 있기 때문에 이런 충돌은 홑따옴표로 묶어서 해결할 수 있다.

근데 setStyle()을 사용할 때 주의할 점은 -가 붙는 CSS 프로퍼티에 대한 부분이다.

CSS에서도 내부 스타일과 외부 <style>태그로 할때 프로퍼티의 이름이 다른 경우들이 좀 있는데 그것처럼 여기서도 주의해야 할 부분이 있다.

background-color 이나 font-size처럼 CSS 프로퍼티가 - 가 붙는 경우에는 backgroundColor 나 fontSize 처럼 카멜방식으로 - 가 없이 작성해 주어야 동작을 한다. 모든 - 가 붙는 프로퍼티가 다 그런지 까지는 확인하지 못했지만 위의 2가지는 확실히 - 없이 작성해 주어야 한다. 대소문자를 가리기 때문에 반드시 위와같은 카멜방식이어야 한다.

이것때문에 한참 해맸다. 처음에는 동적으로 생성한 엘리먼트에는 setStyle이 안 먹나 해서 이것저것 했었는데 결국 스타일이 적용 안된게 저 문제 때문이었다.


덧) 각 스타일은 콤마(,)를 이용해서 구분하는데 마지막에도 콤마를 붙혀주는 실수를 할 경우 Firefox에서는 잘 돌아가지만 IE에서는(내 경우는 7) 에러가 난다. 더군다나 콤마때문에 렌더링 오류가 나는데 생뚱맞은 곳에서 오류메시지가 나기 때문에 디버깅 하기도 쉽지 않다. 콤마에 주의!!

덧) (2008.3.6) CSS의 프로퍼티를 -를 쓰지 않고 대신 카멜방식처럼 대문자로 이어붙히는 것은 자바스크립트 자체의 특징으로 특정 프로퍼티에 대시(-)를 사용할 수 없게 되어있다고 한다. 프로토타입의 특징은 아니었다.

[출처] http://blog.outsider.ne.kr/114
  Comments,     Trackbacks
숫자 -> 문자 문자 ->숫자 Integer.toString
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Integer.toString(숫자);
Integer.parseInt(문자); 

String 클래스의 static 메서드 valueOf는 기본 타입을 문자열로 바꾼다 

int istr = 37;

String.valueOf(istr);

'DEV > java' 카테고리의 다른 글

setView / setViewName  (0) 2008.12.29
[sql-map] tip!!  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate  (0) 2008.12.23
  Comments,     Trackbacks
[javascript]마우스 이벤트 & 키보드 이벤트
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
onClick = 말 그대로 클릭 했을때 발생하는 이벤트 입니다.

마우스를 눌렀다가 땠을때(완료)... 발생하져..

onmouseup = 마우스를 눌렀다가 뗄때(진행)...

onmousedown = 마우스를 누를때(진행)...

마우스 클릭을 이벤트 진행 과정으로 나열해 보면..

(마우스 누르기 : 딸깍 )onmousedown -> (마우스 떼기 : 딸깍)onmouseup -> onclick(순서상 onmouseup 이후에 발생)

위와 같은 순서로 진행 됩니다.

그리고 키 이벤트는...

onKeyDown = 키를 누르고 있을때...
onKeyPress = 키를 누르고 있을때...

key 이벤트는 이벤트 발생 시점이 동일 하지만...

onKeyPress는 특수키에는 이벤트가 발생하지 않습니다.(방향키, home, end, pageup...등등)

onKeyDown 과 onKeyPress 모두 누르고 있는 동안 계속 이벤트가 발생 합니다... 

[출처] onmousedown|작성자 매월향


  Comments,     Trackbacks
클릭시 레이어 창 뜨기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
<div id="point_rank" style="display:none;width:120px;height:100%;position:absolute;cursor:hand;z-index:99999999999;">
<table width="100%" border="0" cellspacing="0" cellpadding="0" id='myPointAndRank' onclick="close_myrank();">
  <tr>
    <td width="70"><b>나의 포인트</b></td>
    <td><div id="my_point"></div></td> // 포인트를 넣을 자리
  </tr>
  <tr>
    <td><b>나의 랭킹</b></td>
    <td><div id="my_rank"></div></td> // 랭킹을 넣을 자리
  </tr>
</table>
</div>


<div id="medal">
<img src="../image/myhome/level$!{userInfo.myRankResult}.png" width="119" height="110" class="iePngFix" style="cursor:pointer" onclick="show_myrank('$!userInfo.point','$!userInfo.myrank','$!userInfo.totalrank','5000');">
</
div>

스크립트

show_myrank=function(point, rank, total, time){
 //alert(point+"\n\n"+rank+"\n\n"+total+"\n\n"+time);
 var layer_name = $('point_rank');
 var my_point = $('my_point');
 var my_rank = $('my_rank');
 var width = 170;

 
 if(rank.length >= point.length)
  width += (rank.length)*7
 else if(rank.length < point.length)
  width += (point.length)*7

 my_point.innerHTML = point+"P";
 my_rank.innerHTML = rank+"/"+total;
 layer_name.style.width= width;
 layer_name.style.top = window.event.clientY - 5;
 layer_name.style.left = window.event.clientX - 170;
 layer_name.style.display = "";
 
 setTimeout(close_myrank,time);
}

close_myrank=function(){
 var layer_name = $('point_rank');
 layer_name.style.display = "none";
}

  Comments,     Trackbacks
[javascirpt] javascript로 원하는 값 전달 받아서 submit 하기!!
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
function submitTest(v1, v2){
var frm = document.frmTest;
frm.col.value = v1;
frm.col2.value = v2;
frm.submit();
}

<from name = "frmTest">
<input type = "hidden" name = "col" value = "$!{params.col}">
<input type = "hidden" name = "col2" value = "$!{params.col2}">

<a href="javascript:submitTest('D01','DESC')">버튼</a>
</form>


'DEV > html/css/js/img' 카테고리의 다른 글

클릭시 레이어 창 뜨기  (0) 2008.12.24
[velocity] 총 정리  (0) 2008.12.23
[velocity] 반복문 Loops  (0) 2008.12.23
  Comments,     Trackbacks
[sql-map] tip!!
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[질문] SQL에 XML 문자(<, > 같은)가 들어가는 경우 해결책은?

 [답변] 두가지 방법이 있다.
(1) XML의 CDATA 섹션 사용하거나

    <statement id="getPersonsByAge" resultClass="examples.domain.Person"><![CDATA[
      SELECT *
      FROM PERSON
      WHERE AGE > #value#
    ]]></statement>

 (2) XML문자를 특수 엔터티 문자로 변환(AnyEdit 플러그인 사용하면 편함)

   <statement id="getPersonsByAge" resultClass="examples.domain.Person">
      SELECT *
      FROM PERSON
      WHERE AGE &gt; #value#
   </statement>

 [질문] SQL이 너무 많아 statement의 id 만으로는 구분이 어렵다면?

 [답변] iBatis는 namespace 개념을 지원한다. sql-map-config.xml 에서

     useStatementNamespaces 값을 true로 준다. 이제 SQL 정의 xml 파일을 여러개로

     나누고 각 파일별로 적당한 namespace를 지정한다.

* sql-map-config.xml

   <sqlMapConfig xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <settings
      cacheModelsEnabled="true"
      enhancementEnabled="true"
      useStatementNamespaces="true"
      lazyLoadingEnabled="true"
      maxRequests="512"
      maxSessions="128"
      maxTransactions="32" />

* SQL 파일에서 이렇게.

 <sqlMap namespace="Sample">

  <select id="getPersonsByAge" ...>

 * DAO 코딩 예("namespace.statement_id" 형식)

   return getSqlMapClientTemplate().queryForList("Sample.getPersonsByAge", "30");

 [질문] 실제 수행되는 쿼리 정보를 콘솔 및 로그에 찍고 싶은데?

 [답변] log4j.properties 파일에 아래처럼 설정한다.

(log4j.logger.java.sql.Connection=DEBUG 는 반드시 있어야한다.)

 log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

 아래 처럼 찍힌다.

 [2004/12/07 16:59:25] <DEBUG> sql.Connection : {conn-100003} Connection
[2004/12/07 16:59:25] <DEBUG> sql.PreparedStatement : {pstm-100004} PreparedStatement: select user_id, password, name, user_type, user_group, regist_date, status from   ws_user where user_id = ?
[2004/12/07 16:59:25] <DEBUG> sql.PreparedStatement : {pstm-100004} Parameters: [test1]
[2004/12/07 16:59:25] <DEBUG> sql.PreparedStatement : {pstm-100004} Types: [java.lang.String]
[2004/12/07 16:59:25] <DEBUG> sql.ResultSet : {rset-100005} ResultSet
[2004/12/07 16:59:25] <DEBUG> sql.ResultSet : {rset-100005} Header: [user_id, password, name, user_type, user_group, regist_date, status]
[2004/12/07 16:59:25] <DEBUG> sql.ResultSet : {rset-100005} Result: [test1, test1, 테스트유저, U, 01, 20041204, A]

[출처] iBatis SQL Map 팁|작성자 서영아빠

'DEV > java' 카테고리의 다른 글

숫자 -> 문자 문자 ->숫자 Integer.toString  (0) 2008.12.29
[sql-map] Dao : getSqlMapClientTemplate  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
  Comments,     Trackbacks
[sql-map] Dao : getSqlMapClientTemplate
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. update
getSqlMapClientTemplate().update("sqlMap-id",넘길값);

2. delete
getSqlMapClientTemplate().delete("sqlMap-id",넘길값);

3. insert
getSqlMapClientTemplate().insert("sqlMap-id",넘길값);

4. select
getSqlMapClientTemplate().queryForObject("sqlMap-id",넘길값); //반환값이 Object 형태

getSqlMapClientTemplate().queryForList("sqlMap-id",넘길값); //반환값이 List 형태

'DEV > java' 카테고리의 다른 글

[sql-map] tip!!  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
  Comments,     Trackbacks
[sql-map] Dao : getSqlMapClientTemplate()
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. update
getSqlMapClientTemplate().update("sqlMap-id",넘길값);

2. delete
getSqlMapClientTemplate().delete("sqlMap-id",넘길값);

3. insert
getSqlMapClientTemplate().insert("sqlMap-id",넘길값);

4. select
getSqlMapClientTemplate().queryForObject("sqlMap-id",넘길값); //반환값이 Object 형태

getSqlMapClientTemplate().queryForList("sqlMap-id",넘길값); //반환값이 List 형태

'DEV > java' 카테고리의 다른 글

[sql-map] Dao : getSqlMapClientTemplate  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
[sql-map] isNull / isNotNull  (0) 2008.12.23
  Comments,     Trackbacks
[sql-map] Dao : getSqlMapClientTemplate()
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1. update
getSqlMapClientTemplate().update("sqlMap-id",넘길값);

2. delete
getSqlMapClientTemplate().delete("sqlMap-id",넘길값);

3. insert
getSqlMapClientTemplate().insert("sqlMap-id",넘길값);

4. select
getSqlMapClientTemplate().queryForObject("sqlMap-id",넘길값); //반환값이 Object 형태

getSqlMapClientTemplate().queryForList("sqlMap-id",넘길값); //반환값이 List 형태

'DEV > java' 카테고리의 다른 글

[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
[sql-map] isNull / isNotNull  (0) 2008.12.23
request.getParameter("parameter") 널값 처리  (0) 2008.12.22
  Comments,     Trackbacks
[velocity] 총 정리
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Spring과 함께 사용

전형적인 디렉토리 구조

그림:VelocityDirectoryStructure.png

  • velocity와 velocity tool을 사용하기 위해 필요한 jar 파일을 lib에 넣어야 한다.
    • velocity-dep-*.jar : velocity 그리고 관련된 클래스 파일
    • velocity-tools-*.jar : velocity tool
    • commons-digester
    • commons-collections
    • commons-beanutils
  • /WEB-INF/velocity 를 velocity template 루트로 잡는다.
  • /WEB-INF/velocity/VM_global_library.vm 가 디폴트 매크로 파일이 된다.
  • /WEB-INF/toolbox.xml 은 velocity tool의 설정이다.
  • 각 설정파일의 위치를 변경하려면 *-servlet.xml에서 한다.

*-servlet.xml

  • -servlet.xml 에 velocity 관련 설정을 넣어 사용할 수 있다.

SpringMVC를 참고할 것.

velocity properties

velocity 관련 설정은 별도의 velocity.properties를 만들어 할 수도 있지만, *-servlet.xml에서 직접 할 수도 있다. 'velocityConfig' 부분의 'velocityProperties' 부분에 property를 추가하면 된다. velocity property의 전체 항목은 velocity jar 파일의 /org/apache/velocity/runtime/default/velocity.properties 에서 확인할 수 있다.

VM_global_library.vm

예를들어 다음과 같이 만들 수 있다.

#macro (xhtml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html 
   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
#end

VTL (Velocity Template Language) 문법

간단한 예제

<html>
<body>
#set ($foo = "Velocity")
Hello $foo World!
</body>
<html>

코멘트

## 로 시작하면 한 줄 코멘트

## 한 줄 코멘트 single-line comment

#* 로 시작하고 *#로 끝나면, 여러 줄 코멘트

#*
 여러 줄 코멘트. 
 여기에 표시되는 내용은 
 Velocity Template Engine이 무시해버린다.
*#

#** 로 시작하고 *#로 끝나면, 블록 코멘트. 사실 여러 줄 코멘트와 다를 것은 별로 없다. 저자나 버전 등을 넣는데 주로 사용한다.

#**
 This is a VTL comment block and
 may be used to store such information
 as the document author and versioning
 information:
 @author
 @version 5
*#

변수 Variable

변수는 $로 시작하며, [a-zA-Z0-9-_] 문자가 변수에 사용될 수 있다.

#set로 변수에 값을 세팅할 수 있다.

#set ($foo = "bar")

원래는 ${foo} 형태가 정식적인(formal) 표현이다. 텍스트 중간에 변수가 들어갈 때 잘못 파싱되는 것을 방지하기 위해, 반드시 이 형태를 사용해야 할 경우가 있다.

Jack is a $vicemaniac.
Jack is a ${vice}maniac.

프라퍼티 Property

변수 안의 프라퍼티에 접근할 수 있다.

$customer.address
$purchase.total

Java Beans 표준의 property 규칙이 그대로 사용된다. (getX(), setX() 등)

메소드 Method

변수로부터 메소드를 곧바로 실행할 수도 있다.

$customer.getAddress()
$date.format("yyyy-MM-dd", $createTime)

조용한 레퍼런스 Quiet Reference

만약 $foo 라고 썼는데 foo 라는 이름의 객체가 존재하지 않는다면, $foo 라는 글자가 결과에 그대로 표현된다. 객체가 존재하지 않을 때 아무것도 표현되지 않게 하려면, $ 다음에 !를 붙인다.

<input type="text" name="email" value="$email"/>
<input type="text" name="email" value="$!email"/>

물론 정식적인 표현도 가능하다.

<input type="text" name="email" value="$!{email}"/>

escaping

'$' 를 표현하려면 \$ 로 한다. '\$' 는 '\\$' 로 표시한다.

혹은 다음과 같이 할 수 있다.

#set ($dollar = "$")
$dollar

지시자 Directive

지시자는 #로 시작한다. ${..}와 같은 이유로, #{..} 표현도 가능하다.

#if($a==1)true enough#elseno way!#end
#if($a==1)true enough#{else}no way!#end

#set

변수에 값을 지정하기 위해 사용한다.

#set ($primate = "monkey") ## literal
#set ($monkey = $bill) ## variable reference
#set ($monkey.Friend = "monica") ## string literal
#set ($monkey.Blame = $whitehouse.Leak) ## property reference
#set ($monkey.Plan = $spindoctor.weave($web)) ## method reference
#set ($monkey.Number = 123) ## number literal
#set ($monkey.Say = ["Not", $my, "fault"]) ## ArrayList
#set ($monkey.Map = {"banana" : "good", "roast beef" : "bad"}) ## Map

#set ($value = $foo + 1)
#set ($value = $bar - 1)
#set ($value = $foo * $bar)
#set ($value = $foo / $bar)

같은 변수에 다른 값을 넣으면, 마지막 넣은 값이 저장된다.

값을 unset 하는 기능은 없다.

Literal

set 할때 문자열은 큰따옴표(") 로 감싸진다. 이 안에 변수가 있으면, 그것도 해석(parse)된다.

#set( $directoryRoot = "www" )
#set( $templateName = "index.vm" )
#set( $template = "$directoryRoot/$templateName" )
$template

결과값은

www/index.vm

하지만 작은따옴표(')로 감싸면 해석되지 않는다.

#set( $foo = "bar" )
$foo
#set( $blargh = '$foo' )
$blargh

결과는

bar
$foo

조건문 if-else

#if ($foo < 10)
   Go North
#elseif ($foo == 10)
   Go East
#elseif ($bar == 6)
   Go South
#else
   Go West
#end

== 연산은 primitive, string, object를 비교하는데, object의 경우 toString()의 값이 비교된다.

AND 연산 : &&

#if ($foo && $bar)
   This AND that
#end

OR 연산 : ||

#if ($foo || $bar)
   This OR That
#end

NOT 연산 : !

#if (!$foo)
  NOT that
#end

$!foo 와 !$foo 를 혼동하지 말 것!

반복문 Loops

$allProducts가 List나 Array인 경우에는 이렇게 한다.

#foreach( $product in $allProducts )
   $product
#end

$allProducts가 Map이나 Hashtable이라면, 이렇게 할 수 있다.

#foreach( $key in $allProducts.keySet() )
   Key: $key -> Value: $allProducts.get($key)
#end

현재 루프 카운트는 $velocityCount로 알아올 수 있다.

#foreach( $customer in $customerList )
   $velocityCount : $customer.Name
#end

$velocityCount 이름과 0부터 시작하는지 1부터 시작하는지 등은 설정 가능하다.

include

#include ("one.txt")
#include ("one.gif","two.txt","three.htm")
#include ("greetings.txt", $seasonalstock)

파일의 내용을 그대로 include한다. 여러 파일을 한꺼번에 include할 수 있다. 파일 이름에 변수가 들어갈 수 있다.

parse

#parse ("me.vm")

파일을 파싱해서 그 결과를 include한다. 한번에 하나의 파일만 가능하다.

Count down.
#set ($count = 8)
#parse ("parsefoo.vm")
All done with dofoo.vm!
#set ($count = $count - 1)
#if ($count > 0)
   #parse ("parsefoo.vm")
#else
   All done with parsefoo.vm!
#end

재귀적으로 사용 가능한데, 깊이가 정해져있다. 깊이는 설정 가능하고, 디폴트로 10이다.

stop

#stop

파싱을 멈춘다.

매크로

일종의 함수 같은 것이다.

다음과 같이 정의하고,

#macro (d)
   <tr><td></td></tr>
#end

다음과 같이 사용한다.

#d()

파라미터를 매크로 이름 뒤에 변수로 받을 수 있다.

#macro (callme $a)
   $a $a $a
#end

이렇게 사용한다.

#callme ($foo.bar())

Velocity Tool

Cookie Tool

$cookie.foo.value
$cookie.add("cookieName", "cookieValue")

Import Tool

$import.read("http://www.rolizen.com/import/url")

Parameter Tool

$params.foo
$params.getString("foo")
$params.getNumber("foo")
$params.getInt("foo")

Alternator Tool

예를들어, 루프를 돌면서 table의 tr을 찍는데, 홀수줄은 흰색으로, 짝수줄은 회색으로 찍고 싶은 경우,

#set ($color = $alternator.auto(["fff", "eee"))
#foreach ($item in $listItems)
<tr style="background-color:#$color">...</tr>
#end

Date Tool

$date                                          -> 2007. 2. 5 오후 3:14:43 
$date.get("yyyy-MM-dd HH:mm:ss")               -> 2007-02-05 15:14:43
$date.format("yyyy-MM-dd HH:mm:ss", $myDate)   -> 2007-02-03 16:31:34

Number Tool

#set ($val = 1234567)
$number.format("currency", $val)   -> ₩1,234,567
$number.format("integer", $val)    -> 1,234,567
$number.format("0,000", $val)      -> 1,234,567
$number.format("0,0000", $val)     -> 123,4567
$number.format("0", $val)          -> 1234567

Escape Tool

$html                        -> "bread" & "butter"
$esc.html($html)             -> "bread" & "butter"
$xml                         -> "bread" & "butter"
$esc.xml($xml)               -> "bread" & "butter"
$javascript                  -> He didn't say, "Stop!"
$esc.javascript($javascript) -> He didn\'t say, \"Stop!\"
$esc.dollar                  -> $
$esc.d                       -> $
$esc.hash                    -> #
$esc.h                       -> #
$esc.backslash               -> \
$esc.b                       -> \
$esc.quote                   -> "
$esc.q                       -> "
$esc.singleQuote             -> '
$esc.s                       -> '
$esc.exclamation             -> !
$esc.e                       -> !

Iterator Tool

List Tool

List나 Array에서 엘리먼트를 get / set 할 수 있다.

$primes                    -> new int[] {2, 3, 5, 7}
$list.size($primes)        -> 4
$list.get($primes, 2)      -> 5
$list.set($primes, 2, 1)   -> (primes[2] becomes 1)
$list.get($primes, 2)      -> 1
$list.isEmpty($primes)     -> false
$list.contains($primes, 7) -> true

Math Tool

Sorter Tool

Velocity Tool 만드는 법

일반적인 Tool

그냥 일반적인 class를 만들면 된다. public한 field와 method를 사용할 수 있다.

context 를 갖는 Tool

public class MemberUtil {
   private HttpServletRequest request;
   private HttpSession session;
   private MemInfoData meminfo;

   public void init(Object obj) {
      ChainedContext cc = (ChainedContext)obj;
      this.request = cc.getRequest();
      this.session = request.getSession(true);
      meminfo = (MemInfoData)session.getAttribute(MemInfoData.MEMINFO_SESSION_KEY);
      if (!validMemInfo(meminfo))
         meminfo = null;
   }

   private boolean validMemInfo(MemInfoData mid) {
      return (mid != null) && (mid.getMemNo() > 0) && (mid.getOpenid() != null);
   }

   public HttpServletRequest getRequest() {
      return request;
   }

   public HttpSession getSession() {
      return session;
   }

   public MemInfoData getMeminfo() {
      return meminfo;
   }

   public boolean isLogin() {
      return (meminfo != null);
   }
}

위와 같이 init() 메소드를 이용해 context를 받을 수 있다.

참고사이트  : http://velocity.apache.org

출처 :http://technet.ui2.co.kr/wiki/index.php/Velocity

'DEV > html/css/js/img' 카테고리의 다른 글

[javascirpt] javascript로 원하는 값 전달 받아서 submit 하기!!  (0) 2008.12.24
[velocity] 반복문 Loops  (0) 2008.12.23
#set  (0) 2008.12.23
  Comments,     Trackbacks