Mayaa框架语法及项目常用--注意事项

247 阅读1分钟

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 &amp;&amp; emailConfigBean.configBean2 != null &amp;&amp; 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}">