铁手剑谱

上善若水
数据加载中……
Struts秘籍之第2段:第3.7式: 动态产生JavaScript

第3.7式. 动态产生JavaScript

问题

你想要根据从应用模型获得的数据动态产生JavaScript。

动作要领

使用Struts 标签在你想要包含在HTML中的JavaScript 代码中渲染数据:

<script language="JavaScript">
    
function showMessage(  ) {
        alert( 
"Hello, <bean:write name='myForm' property='name'/>!" );
    }

</script>

 

动作变化

上述方案产生了一个JavaScript 函数,弹出一个消息框,消息文本为"Hello, name!" name的值是使用bean:write标签产生的。此方案展示了使用Struts 标签创建JavaScript 和它们创建HTML一样的容易。

JSTL也可以按这种方式使用。

虽然这种方法很明显,但是很奇怪很多人都在问这个问题。通常问题还可能是:"我如何才能从Struts中调用HTML中的JavaScript 函数?" 技术上讲,你并不能从Struts调用一个HTML页面中的JavaScript 函数。Struts 和JSP 技术都运行在服务器端。相反,JavaScript确是在客户端的浏览器中处理的。但是,通过这里所述的动态产生JS的能力,基本上还是相当于所需的这个行为。

这个方法的一个重要基础是JSP的转换过程。JSP 页面由JSP 声明,标准JSP 标签 (比如jsp:useBean), 定制JSP 标签(比如Struts 和JSTP 标签), 运行是表达式,以及脚本小程序(scriptlets)组成。除此之外的其他东西都是模板文本(template text)。模板文本可以是任何不会被JSP转换处理的内容。人们通常会认为模板文本就是HTML 标记,但是它其实是JavaScript 或者其他非JSP 处理的文本。JSP 翻译器并不关心模板文本采用何种形式。因此,你可以象在HTML元素中产生文本一样容易地在JavaScript 函数中产生文本。

如果你使用JSP 来产生良构的(well-formed)XHTML, 那么动态JavaScript 模版文本必须使用jsp:text元素和CDATA section的方式结合来指定。具体信息参见Hans Bergsten的ONJava 文章:http://www.onjava.com/pub/a/onjava/2004/04/21/JSP2part3.html

这里的例子仅仅列出了很简单的使用场景。如果要访问的模型数据需要使用复杂的JavaScript数据结构,比如,数组,你可以使用迭代标签,比如logic:iterate和c:forEach来组装这些结构。

相关动作

下一动3.8或会使用迭代标签来产生客户端的JavaScript 数组。

posted on 2005-06-07 12:32 铁手 阅读(3847) 评论(3)  编辑  收藏 所属分类: JavaStruts系列企业架构框架

评论

# Struts 秘籍(CookBook)[TrackBack] 2005-11-12 18:29 阿泠

本系列源改编自O'Reily的Strus Cookbook
[引用提示]阿泠引用了该文章, 地址: http://blog.donews.com/inclear/archive/2005/11/12/624363.aspx
  回复  更多评论    

# re: Struts秘籍之第2段:第3.7式: 动态产生JavaScript 2006-07-31 10:41 笨笨猴

铁手兄,谢谢了。。。。。。
  回复  更多评论    

# re: Struts秘籍之第2段:第3.7式: 动态产生JavaScript 2007-07-05 09:50 Laosan

纯爷们~~!
  回复  更多评论    

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


网站导航: