如何使用实体将值从过程(SQL 服务器)传递到 Struts 2

How to pass a value from a procedure (SQL Server) to Struts 2 using Entity

这是我的程序:

create procedure [dbo].[reportlist]
@reportedrestaurant int
as
select reportedrestaurant,count(reportedrestaurant) as numberofreport from Report where reportedrestaurant = @reportedrestaurant  group by reportedrestaurant

GO

这是我的代码:

public List reportlist(int reportedrestaurant){
    StoredProcedureQuery squery = em.createStoredProcedureQuery("reportlist");
    squery.registerStoredProcedureParameter("reportedrestaurant", Integer.class, ParameterMode.IN);
    squery.setParameter("reportedrestaurant", reportedrestaurant);
    List<Object[]> list = (List<Object[]>)squery.getResultList();
    return list;    
}

这是我的操作:

public String execute() throws Exception {
    ReportedDAO dao = new ReportedDAO();
    list = dao.reportlist(restaurant);
    return "success";
}

当我执行时,我在列表中收到 1 记录,但是当我尝试获取它时,它 return 一个非整数值,如下所示:[Ljava.lang.Object;@7c0e76cd.

JSP:

<td style="text-align: center"><s:property value="%{reportedrestaurant}"/></td> <td style="text-align: center"><s:property value="%{numberofreport}"/></td>

我的代码有什么问题吗?有解决办法吗?

解决此问题的解决方案是使用 OGNL 表达式在值堆栈中查找值。这是数据应该像动作一样驻留的地方。如果你使用 list 那么你可以通过索引获取值。假设 list 的 getter 可用

<td style="text-align: center"><s:property value="%{list[0][0]}"/></td> <td style="text-align: center"><s:property value="%{list[0][1]}"/></td>

或者您可以为 reportedrestaurantnumberofreport

创建一个 getter
public String getReportedrestaurant(){return String.valueOf(list.get(0)[0]);} 

public int getNumberofreport(){return ((BigInteger)list.get(0)[1]).intValue();}

然后在 JSP

上使用它
<td style="text-align: center"><s:property value="%{reportedrestaurant}"/></td> <td style="text-align: center"><s:property value="%{numberofreport}"/></td>