我已经阅读了使用 Java 和 Struts 2 构建简单的“Hello World”应用程序的大部分在线资源。我了解这些简单的东西。我的问题是我正在尝试扩展这种学习并构建一个大型应用程序,但我只是不知道如何连接这些点。
场景:我从三个视图开始:Home.jsp、MyAccount.jsp、Contact.jsp。每个都有以下 HTML:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="js/common.js"></script>
...
</head>
<body>
<!-- If logged in, says "hello <s:property name="username">"
Else displays link to .show() #loginPane -->
<div id="accountHeader">...</div>
<!-- Displays <s:textfield> tags and <s:submit> tag to accept username and password -->
<div id="loginPane" style="display: none">...</div>
<header>...</header>
<nav>...</nav>
<!-- Displays view-specific content that includes Struts 2 tags -->
<div id="content">...</div>
<footer>...</footer>
</body>
</html>
因此,显然每个视图都有很多共同的代码(任何不在#content div 中的代码)。
我如何构建这些视图以实现代码重用?
我试过的:
将通用代码放在 common.js 中并使用 jQuery .html() 调用来填充
<div>
s。[不起作用,因为 jQuery 无法生成带有<s:>
标签的代码。]仅使用一个 .jsp 视图文件并将特定于视图的代码放在 common.js 中,以通过 jQuery .html() 调用生成。[出于同样的原因不起作用——jQuery 无法生成带有
<s:>
标签的代码。]将所有视图组件放在 .jspf 文件中,并使用来自 common.js 的 jQuery .load() 调用加载每个组件。[不起作用——我猜 .jspf 文件需要包含在每个文件中的 Struts 2 <%taglib ...%> ,但是 jQuery .load() 将 <%taglib ...%> 视为文本显示在
<div>
... 并且也无法正确生成<s:>
标签。]
这样做的正确方法是什么?如何构建我的视图以实现代码重用?
如果这不是寻求架构帮助的适当论坛,我深表歉意,但我在这里真的很挣扎......也许给我一个更合适的论坛或解决此类架构的在线教程?
提前致谢!