속성만 치환하기

body의 내용만 치환하는 것만으로는 충분하지가 않다. HTML태그의 속성만 치환해야 할 경우가 많은데, 이런 경우 echo프로세서를 사용한다.

간단한 예

ol태그의 type속성을 A -> i로 치환한다. start속성은 그대로 출력된다.

echo_list.html
<html> <body> <ol id="list" type="A" start="3"> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> </ol> </body> </html>

echo_list.mayaa
<?xml version="1.0" encoding="UTF-8"?> <m:mayaa xmlns:m="http://mayaa.seasar.org"> <m:echo m:id="list"> <m:attribute name="type" value="i" /> </m:echo> </m:mayaa>

ol태그에 m:echo를 붙이고, 자식태그로 m:attribute태그로 치환할 속성명과 값을 기술한다.

실행결과
<html> <body> <ol id="list" type="i" start="3"> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> </ol> </body> </html>

속성추가

이미 존재하지 않는 속성을 기술하면 속성이 추가되는 결과를 얻을 수 있다.

echo_list.mayaa
<?xml version="1.0" encoding="UTF-8"?> <m:mayaa xmlns:m="http://mayaa.seasar.org"> <m:echo m:id="list"> <m:attribute name="type" value="i" /> <m:attribute name="style" value="color: blue;" /> </m:echo> </m:mayaa>

실행결과
<html> <body> <ol id="list" type="i" start="3" style="color: blue;"> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> </ol> </body> </html>

탬플릿의 속성치 사용하기

m:echo태그 내에서 html파일의 속성명을 변수처럼 사용할 수 있다.

echo_list.html
<html> <body> <ol id="list" type="A" start="3"> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> </ol> </body> </html>

echo_list.mayaa
<?xml version="1.0" encoding="UTF-8"?> <m:mayaa xmlns:m="http://mayaa.seasar.org"> <m:echo m:id="list"> <m:attribute name="type" value="i" /> <m:attribute name="style" value="color: blue;" /> <m:attribute name="start" value="${ new Number(start) + 2 }" /> </m:echo> </m:mayaa>

실행결과
<html> <body> <ol id="list" type="i" start="5" style="color: blue;"> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> </ol> </body> </html>

속성값은 문자열이기 때문에 수치연산을 위해서는 Number로 변환할 필요가 있다.
"class"등 예약어를 변수명으로 사용하려고 할 때에는 page['class']와 같이 page스코프라고 명시하는 방법으로 사용가능하다.

Comments