Sparta Yew

     简约、职业、恒久
随笔 - 15, 文章 - 1, 评论 - 276, 引用 - 0
数据加载中……

Struts2的dojo使用与/template/ajax/head.ftl not found.

    sparta-紫杉  2010-6-3 8:05   

    在项目中使用到Struts2的dojo时,出现java.io.FileNotFoundException: Template /template/ajax/head.ftl not found. 有时出现.../text.ftl not found. 错误。

    分析一下:
    从strtus2.1.x开始,Struts2团队将dojo从核心包里面提取出来,成为一个struts2的插件struts2-dojo-plugin-*.jar,因此在jsp页面上,若要使用dojo的话,必须引入如下标签库:<%@taglib prefix="ss" uri="/struts-dojo-tags"%/>。当然,若要使用Struts2的标签库,还需引入<%@taglib prefix="s" uri="/struts-tags"%/>标签库。
        
    另外,Struts2的标签(无论是dojo或非dojo)均需要freeMarker模板文件*.ftl进行渲染和解释以生成Html页面,dojo或非dojo的标签库均配备一套自己的模板文件库,在jsp页面里,struts2根据各标签的theme来查找自己配置的相应模板文件*.ftl,若theme设置不对,则struts2就会从相应路径中找不到需要的ftl文件,就会报错../*.ftl not found. 
       
    当在jsp页面内,标签的主题(theme)若设置不正确,则会找不到相应的ftl文件。 比如下面代码:

        <s:form method="post" validate="true" theme="xhtml">
            <s:textfield label="Name" name="name" />
            <s:password label="Password" name="password" />
            <s:textfield label="Age" name="age" />
            <ss:submit />
        </s:form>
     
    上述的theme定为xhtml,若是修改为theme="ajax",则在运行时jsp页面将不会被解析,提示.../text.ftl not found。 这是因为在struts2的核心包中没有template/ajax/text.ftl文件。

    jsp文件中使用的标签是dojo的,就会根据theme的设置到与dojo配置的模板文件中去找,使用的标签为struts2的,就到与struts2配套的模板文件中去找。这样才能找得到自己需要的模板文件进行渲染。呵呵,经历了痛苦的探索之后,终于明白了个中原理。



            -东营 sparta-紫杉 原创,转载请注明出处 :)
            http://www.blogjava.net/SpartaYew/
            SpartaYew@163.com
 
            
QQ:22086526

posted on 2011-05-19 14:32 sparta-紫杉 阅读(4857) 评论(0)  编辑  收藏 所属分类: SSH2


只有注册用户登录后才能发表评论。


网站导航: