将html元素动态插入到jsp文件的模板中

时间:2010-11-21 18:28:27

标签: html jsp templates

我想将一些html元素动态插入到jsp文件的模板中。

我知道我可以通过使用javascript的代码片段来实现这一点,但我想知道有更好的方法吗?

这是我的例子:

myTemplate.jsp

......
<div id="content"></div>
.....

myPage.jsp

<jsp:include page="myTemplate.jsp"></jsp:include>

//This the line which I'm searching if there is.
setContent into the div with id "content"

2 个答案:

答案 0 :(得分:3)

JSP无法实现这一点。考虑从JSP迁移到Facelets。这是一种基于XHTML的视图技术。然后,您将能够使用<ui:insert><ui:define>实现所需的功能。

/WEB-INF/web.xml

<servlet>
    <servlet-name>facesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

/WEB-INF/template.xhtml

<!DOCTYPE html>
<html lang="en" xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <head>
        <title><ui:insert name="title" /></title>
    </head>
    <body>
        <ui:insert name="content" />
    </body>
</html>

/page.xhtml

<ui:composition template="/WEB-INF/template.xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
    <ui:define name="title">Page title</ui:define>
    <ui:define name="content">
        <div id="content"></div>
    </ui:define>
</ui:composition>

在webbrowser中调用/page.xhtml将最终为

<!DOCTYPE html>
<html lang="en">    
    <head>
        <title>Page title</title>
    </head>
    <body>
        <div id="content"></div>
    </body>
</html>

Facelets的另一个优点是对JSF的内置支持,这是一个基于组件的MVC框架。

答案 1 :(得分:1)

好吧,无论你使用什么框架,它都会被翻译成一些浏览器组件[javascript / flash / applet]和一些服务器端组件[Servlet / Filter],如果你想动态修改内容,没有刷新页面。 从这个角度看,普通的JavaScript / Servlet组合很好。 但是从可管理性的角度来看,使用任何具有Ajax支持的java框架。 JSF2,JSF与RichFaces,GWT 等等。仅举几例。