我有一个从数据库查询中获取的产品列表。
在每个产品中都有Date_in
和Date_out
日历类型的变量。
我想要做的是将这些产品传递给jsp视图,以便我可以构建一个包含所有信息的表。为此,我需要将日历日期转换为更合适的格式(如字符串),并且我有一个实用程序。
我的问题是:如何将每个转换后的date_in / date_out传递给list.setAttribute,列表中的每个产品?
这就是我所拥有的。
ProductAction
中的:
List<Product> products = service.viewActiveProducts();
for(Product product: products) {
String date_inToString = DateConversionUtility.calendarDateToString(product.getDate_in());
String date_outToString = DateConversionUtility.calendarDateToString(product.getDate_out());
}
request.setAttribute("products", products);
在jsp中:
<table>
<tr class="index">
<td>Id</td>
<td>Date IN</td>
<td>Date OUT</td>
</tr>
<c:forEach items="${requestScope.products}" var="product">
<tr>
<td>${product.oid}</td>
<td>${product.date_in}</td>
<td>${product.date_out}</td>
</tr>
</c:forEach>
</table>
(现在,product.date_in和product.date_out采用日历格式。我希望它们采用String格式。)
答案 0 :(得分:1)
您可以创建自定义JSTL函数并直接在JSP EL标记中使用它。
<td>${product.oid}</td>
<td>${nspace:formatDate(product.date_in)}</td>
<td>${nspace:formatDate(product.date_out)}</td>
其中nspace
是分配给您的库的xml命名空间,formatDate
是您的方法。几个链接:
http://www.noppanit.com/how-to-create-a-custom-function-for-jstl/ http://anshulsood2006.blogspot.com.es/2012/03/creating-custom-functions-in-jsp-using.html
答案 1 :(得分:1)
您可以通过request.setAttribute(String,Object);
将整个列表传递给jspList<Product> products = service.viewActiveProducts();
request.setAttribute("products", products);
您的Product类应该实现Serializable接口
要以字符串格式获取属性date_in和date_out,请将它们转换为字符串,并在Product类中再添加两个属性,其名称为dateInString和dateOutString,并将其值设置为
for(Product product: products) {
product.setDateInString(DateConversionUtility.calendarDateToString(product.getDate_in()));
product.setDateOutString(DateConversionUtility.calendarDateToString(product.getDate_out()));
}
在jsp中,您可以使用JSTL获取Products对象迭代列表的属性或字段
<c:forEach items="${products}" var="product">
<tr>
<td>${product.oid}</td>
<td>${product.dateInString}</td>
<td>${product.dateOutString }</td>
</tr>
</c:forEach>
答案 2 :(得分:0)
在Product bean中创建一个getDate_inString()
和getDate_outString
方法,用于打印您想要的内容。然后,在jsp中,您可以使用${product.date_inString}