태그에 사용하는 스크립트

루프문에 약간의 처리를 넣는 경우 같이 스크립트를 기술하고 싶은 경우 exec프로세서를 사용한다. 속성으로는 Javascript파일의 위치를 지정하는 src속성과 ${}에 직접 기술하는 script속성이 있다.

간단한 예

아래의 예는 exec프로세서를 사용해서 루프변수가 짝수인지 홀수인지를 판단해서 evenodd라는 변수에 저장한 후 출력한다.

exec.html
<html> <body> <div id="loop"> <div id="evenodd"><span id="value">dummy</span></div> </div> </body> </html>

exec.mayaa
<?xml version="1.0" encoding="UTF-8"?> <m:mayaa xmlns:m="http://mayaa.seasar.org"> <m:for m:id="loop" init="${ var i = 1 }" test="${ i &lt; 6 }" after="${ i += 1 }" /> <m:exec m:id="evenodd" replace="false" script="${ var evenodd = (i % 2 == 0) ? 'even' : 'odd'; }" /> <m:write m:id="value" value="${ i + ': ' + evenodd }" /> </m:mayaa>

변수evenodd는exec프로세서내에서만 유효하다. id="value"의 span태그는 exec프로세서의 body이기 때문에 evenodd변수를 참조가능한 범위에 있다.

실행결과

<html> <body> <div id="evenodd">1: odd</div> <div id="evenodd">2: even</div> <div id="evenodd">3: odd</div> <div id="evenodd">4: even</div> <div id="evenodd">5: odd</div> </body> </html>

간단한 활용법이라면 request에 들어있는 object에 접근하기 위해서 object.getProperty().getChildre()[1].getValue()등과 같이 아주 긴 기술(oject.property.children[1].value다고 해도 긴 표기가 된다)이 되는 경우가 많은데 var child=object.property.children[1]과 같이 미리 선언해 두고 child.value등 과 같이 짧게 기술하는 것을 가능하게 하는 경우가 있겠다. 


Comments