JSP页面的模板

时间:2014-05-26 11:08:00

标签: java spring jsp

我正在寻找一种方法来为jsp页面创建一个模板,其类似于Java的genereic类的行为?

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

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

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

通用课程

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 - &gt;它只是我将数据提交到服务器的表单。表单的每个字段都是我的Entity类的一个属性。

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

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

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

我想要的是,例如,它是这样的:

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

3 个答案:

答案 0 :(得分:1)

我认为你的意思是在多个页面中重复使用模板,对吧?许多技术为此扩展提供了解决方案。类继承的类比意味着自上而下的开发,下一页更专业。有效地在模板世界中,瓷砖和类似的技术为所谓的“布局”提供了支持。 - 一个子模板,用于定义插入更多标记的位置。

此功能只是现代标记语言的一项功能。特别是它可以在JSF中找到。另见HybridJava。

答案 1 :(得分:1)

最接近的是JSP include标记:

<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 :(得分:1)

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

如果您愿意继续使用其他内容,则应该查看VelocityFreemarkerThymeleaf

我亲自与Thymeleaf合作,可以说你可以很容易地创建布局,然后可以实现&#34;通过特定页面或&#34;扩展&#34;通过更专业的布局

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