【发布时间】:2013-07-15 08:36:55
【问题描述】:
我已经阅读了大部分关于使用 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 ,但是 jQuery .load() 处理 作为要显示在
<div>...中的文本,也无法正确生成<s:>标签。]
这样做的正确方法是什么?如何构建我的视图以实现代码重用?
如果这不是寻求架构帮助的适当论坛,我深表歉意,但我在这里真的很挣扎......也许可以为我指出一个更合适的论坛或解决此类架构的在线教程?
提前致谢!
【问题讨论】: