2、注意事项
2.1、使用jsp标记
// xx.html
<html>
<body>
<span id="message">ddd</span>
</body>
</html>
// xx.mayaa
<?xml version="1.0" encoding="UTF-8"?>
<m:mayaa xmlns:m="http://mayaa.seasar.org" xmlns:c="http://java.sun.com/jsp/jstl/core">
<c:out m:id="message" value="hello"/>
// 仅增加了xmlns:c="http://java.sun.com/jsp/jstl/core"以及修改标签为c:out
</m:mayaa>
// 执行结果
<html>
<body>
hello
</body>
</html>
2.2、使用m:id和id
针对mayaa要使用该id,而css和js也要使用该id的是的的情况
html中的标记的id属性并非一定是为mayaa准备的,在css和js中都有可能使用这些模板中的id。
这种情况下可以直接在模板文件中指定m:id,但是要注意,要想在模板中直接指定m:id,必须把在mayaa文件中的xmlns.m="http://mayaa.seasar.org"作为属性卸载模板的html标记中。
模板文件中m:id和id属性都存在的情况下,在于mayaa文件中的绑定中m:id属性,优先绑定,另外,m:id本身不输出。作例子如下:
// xx.html
<span m:id="msg" id="forCss">11</span>
// xx.mayaa
<m:write m:id="msg" value="22" replace="false"/>
// 执行结果
<span id="forCss">22</span>
// m:id在渲染时不输出
2.3、inject模板嵌入
使用属性m:inject,
并且把xmlns:m="http.mayaa.seasar.org"作为模板中html标记的属性写在模板上。
2.4、mayaa文件中使用JavaScript
// xx.mayaa
<m:beforeRender><![CDATA[
var fool = "bar1";
function greeting() {
var message = "hello";
java.lang.System.out.printIn(message);
}]]>
</m:beforeRender>
2.5、使用保存在request或session里的数据
和jsp一样可以使用request和sesslon的数据,例如获取request范围内的属性attr1buteName的值,用${request.getAttribute("属性名")}就可以了。
也可以更简单的写成${属性名},mayaa引擎从scop寻找属性名的依次顺序是:page,scop,
requestscop,sessionscop,applicationscop,四个SCOP中都找不到属性的情况下就抛异常了。
获取客户端(client)传过来的参数,可以使用${param.属性名},如果指定的参数不存在,就返回null值。
2.6、不使用.mayaa文件,直接在模板上完成
可以不使用mayaa文件,而直接把设定写在模板上,对于复杂的处理没有mayaa文件不能完成,但是有一些简单的处理不需要用mayaa文件,直接在模板上的就可以完成,这样可以避免过多的使用mayaa文件。
如何把mayaa的processor直接写在模板标记中。使用属性m:inject,并且把
xmlns:m="http://seasar.org"作为模板中html标记的属性,写在模板上。
m:inject属性的值就是我们通常在mayaa文件中用到的骗processor的名字。模板中用到的processor的属性和mayaa文件中的processor属性相同。只是不可省略processor个属性的前缀m:
不使用mayaa文件,直接在模板上完成设定,给出两个例子,分别是用m:write 和 c:out 来输出字符串,特别需要注意的是用c:out的时候,此时的前缀由于不可以省略,必须显示写出来,c:out的属性前缀用c: 不是m:
/举例1:
//xx.html
<html xlms:m="http://mayaa.seasor.org">
<body>
<span m:inject="m.write" m:value="Hello Mayaa!">dummy m</span>
</body>
</html>
//执行结果
<html>
<body>
Hello Mayaa!
</body>
</html>
/举例2:
//xx.html
<html xmlns:m="http://mayaa.seasar.org" xmlns:c="http://java.sun.com/jsp/jstl/core">
<body>
<span m:inject="c.out" c:value="Hello Mayaa!">dummy message</span>
</body>
</html>
//执行结果
<html xmlns:c="http://java.sun.com/jsp/jstl/core">
<body>
Hello Mayaa!
</body>
</html>
/混合使用
<html xmlns:m="http://mayaa.seasar.org" >
<body>
<div id="condition">
<span m:inject="m.write" m:value="Hello Mayaa!">dummy message</span>
</div>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<m:mayaa xmlns:m="http://mayaa.seasar.org" >
<m:if m:id="condition" test="${1==1}"/>
</m:mayaa>
<html>
<body>
Hello Mayaa!
</body>
</html>
2.7、如果想要输出字符{}表示
admin项目中有html和mayaa,其中if判断该区域是否显隐藏:
// html
<temp m:id="configDatabaseFormdata">
<li>
<div class="li-div" href="#config-database-formdata">
<span class="ico-pos"></span>
<span>
<span m:id="DatabaseFormdata">数据库表单数据设置</span>
</span>
</div>
</li>
</temp>
// mayaa
<m:if
m:id="configDatabaseFormdata"
test="${emailConfigBean.configBean1 != null && emailConfigBean.configBean2 != null && emailConfigBean.configBean3 != null}" />
2.8、对异常的处理
对异常的处理:
在js当中可以使用try catch语句来捕捉程序发生的异常,那么mayaa中也可用js的try catch语句来捕捉java发生的异常。mayaa中调用java类的方法可能抛出的异常都在java应用程序中定义过了,在mayaa里只需要捕捉就可以了。
var caught="",
try {
var list = myLogic.findByName(name);
}catch(e){
caught=e
}
<m:write m:id="error" value="${caught}">