我想将一些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"
答案 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 等等。仅举几例。