【问题标题】:Templates for JSP pagesJSP 页面的模板
【发布时间】:2014-05-26 11:07:59
【问题描述】:

我正在寻找一种为 jsp 页面创建模板的方法,该模板具有与 Java 中的泛型类类似的行为?

我现在拥有的:在我的视图文件夹(WEB-INF/view/jsp)中,我有一个目录列表,其中包含相同的四个文件,并接收他的功能名称(例如,新项目、更改项目、删除项目,列表)。

在每个组中,jsp 页面保存您从我的项目中的一个特定实体类中读取的数据。

例如,对于我的道课程,我有类似的东西:

泛型类

public class Dao<E> {

    private final Class<E> entity;

    @Autowired
    protected SessionFactory sessionFactory;

    protected Session getCurrentSession(){
        return sessionFactory.getCurrentSession();
    }

    public Dao(Class<E> classe) {
        this.entity = classe;
    }

    public boolean remove(E transientInstance) {
        ...
    }

    ...
}

这样,每个 Dao 类都有一个类似这样的结构:

@Repository
public class FornecedorDao extends Dao<Fornecedor> {

    public FornecedorDao() {
        super(Fornecedor.class);
    }

}

有什么可以完成类似于 jsp 页面的内容吗? (我更喜欢不需要向我的项目添加其他框架的解决方案,除了 Spring)。

更新

更好地解释每个文件夹中的每一页:

new_item.jsp -> 这只是我将数据提交到服务器的表单。表单的每个字段都是我的 Entity 类的属性。

change_item.jsp -> 与 new_item.jsp 相同,加上一个带有类的属性 id(主键)的隐藏字段。

remove_item.jsp -> 有一个只有一个字段的表单:一个隐藏的字段,其中包含要删除的元素的 id。

list.jsp -> 接收项目列表并生成一个表,其中每一列都是我的实体类的属性。

我希望完成的,例如,它是这样的:

在模板中,我将有表单或表格的 html 代码。此页面没有样式:jquery 代码读取它们,去除标题和正文内容,并将此数据添加到我的 jsp 页面dashboard.jsp 中的 div 中。在每个页面中,我喜欢只告诉我将使用的实体类的名称并赋予属性,并基于模板创建要传递到浏览器的页面。

【问题讨论】:

  • 代码sn-p的目的是什么?是通过创建基类来解释您的意思还是与问题特别相关?
  • 您希望共享 JSP 的哪一部分以及您希望更改什么?所有页面是否具有相同的外观和感觉,但它们在哪个“对象”类型上工作? (例如,一个编辑汽车列表,另一个编辑动物列表)
  • 我添加了更多关于我想要的规格的信息。包含代码只是为了显示我对模板和每个派生页面的期望。

标签: java spring jsp


【解决方案1】:

你能得到的最接近的就是 JSP 包含标签:

<jsp:include page="new_item.jsp">
    <jsp:param name="formaction" value="newItemServlet"/>
    <jsp:param name="entityparams" value="{params:[param1,param2,param3]}"/>
</jsp:include>

这将允许您将参数传递给 JSP 模板。然后可以使用将呈现自定义表单字段的 JSP 和 javascript 解析这些参数。

【讨论】:

    【解决方案2】:

    我假设您的意思是从在多个页面中重用模板中受益,对吧?许多技术为这个或那个扩展提供了解决方案。类继承的类比意味着自上而下的开发,下一页更加专业化。在模板世界中,Tiles 和类似技术有效地为所谓的“布局”提供了支持 - 一个定义插入更多标记的位置的子模板。

    此功能只是现代标记语言的功能之一。特别是它可以在 JSF 中找到。另请参见混合 Java。

    【讨论】:

      【解决方案3】:

      如果您想坚持使用 JSP,您应该查看 Apache Tiles 以获得合理的模板解决方案。

      如果您愿意继续做其他事情,您应该查看VelocityFreemarkerThymeleaf

      我亲自与 Thymeleaf 合作过,可以说您可以非常轻松地创建布局,然后可以通过特定页面“实现”或通过更专业的布局“扩展”

      上述所有三个模板引擎都可以在 Spring 中轻松配置为视图解析器

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-04
        • 1970-01-01
        • 1970-01-01
        • 2014-07-27
        • 1970-01-01
        • 2010-11-23
        相关资源
        最近更新 更多