Iterating和setAttribute对请求范围

时间:2013-06-12 10:44:30

标签: java jsp servlets setattribute

我有一个从数据库查询中获取的产品列表。

在每个产品中都有Date_inDate_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格式。)

3 个答案:

答案 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);

将整个列表传递给jsp
List<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}