我正在寻找一种方法来为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属性,并且基于模板,将创建要传递给浏览器的页面。
答案 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以获得合理的模板解决方案。
如果您愿意继续使用其他内容,则应该查看Velocity,Freemarker或Thymeleaf。
我亲自与Thymeleaf合作,可以说你可以很容易地创建布局,然后可以实现&#34;通过特定页面或&#34;扩展&#34;通过更专业的布局
上述所有三个模板引擎都可以在Spring中轻松配置为视图解析器