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스코프라고 명시하는 방법으로 사용가능하다.