如何使用实体将值从过程(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>
或者您可以为 reportedrestaurant
和 numberofreport
创建一个 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>
这是我的程序:
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>
或者您可以为 reportedrestaurant
和 numberofreport
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>