我刚刚开始学习struts(+spring) MVC,我可以使用一些关于这种情况的解释:
我正在使用Struts Tiles作为我的表示层,我想在几个瓦片中显示数据库中的一些数据,这些瓦片与主要内容瓦片将形成完整的页面。我想不出适合mvc模式/最佳实践的合适方法。
这些磁贴的内容是从数据库中获取的,它不是基于用户的输入,例如,磁贴列出了一些添加到商店的最新产品等。
我做了什么:我已经用静态方法创建了类'A‘,它可以查询数据库并返回一些最新产品的列表,并且在这个磁贴的jsp中,我刚刚将scriptlet放入如下所示:
<%表示A.GetLastestProducts()中的每一项;显示数据%>
但有人告诉我这不是个好办法
谁能给我解释一下如何正确处理这种情况,比如“创建查询你的数据库的类,然后创建blach,然后在你的磁贴jsp blach blach中创建blach”
谢谢
发布于 2011-09-16 23:56:00
如果您正在使用struts,我建议在JSP中使用struts架构。我可能会像这样构造它:
public class MyStutsAction extends ActionSupport implements preparable{
private List<MyNewProducts> newProducts;
@Override
public void prepare() throws Exception {
if(products == null){
products = MyNewProductsDAO.getProductList();
}
}
//Struts action stuff
public List<MyNewProducts> getNewProducts(){
return newProducts;
}
public setNewProducts(List<MyNewProducts> newProdcuts){
this.newProducts = newProducts;
}
}
然后,您可以从JSP页面访问它:
<s:iterator value="newProducts" status="stat">
<div> <s:property value="%{attributeName}" /> </div>
</s:iterator>
这将通过维护值堆栈中的产品列表来消除一些不必要的数据库调用,如果出于某种原因,prepare方法中的条件为空,则它将填充该列表。
https://stackoverflow.com/questions/7445991
复制相似问题