我在List中检索了DAO bean行。在我的JSP中,我正在访问List以迭代直到填充我的页面。我的JSP无法访问List,因为它表示在执行request.getParameter时它必须是String。我如何将其转换为String最终填充我的页面?
public List getAccessRequest()
{
List accessRequesttList = new ArrayList()); // parse List to string
//AccessRequest accessrequest = null;
AccessRequest accessRequest = new AccessRequest());
try
{
System.out.println("Try statement begins AccessRequestDAO");
PreparedStatement accrqststmt = super.getConnection().prepareStatement(AccRqstSqlStmt);
ResultSet resultSet = accrqststmt.executeQuery();
while (resultSet.next())
{
// Creating an instant of job follows
accessRequest = new Accessrequest();
accessRequest.setJOB_NAME(resultSet.getString("job_name"));
accessRequest.setRequest_ts(resultSet.getTime("request_ts"));
accessRequestList.add(accessRequest);
Iterator iterator = accessRequestList.iterator();
while (iterator.hasNext())
{
accessRequest = (Accessrequest) iterator.next();
}
}
return (accessRequestList);
我的JSP如下所示:
<%
List jobList = request.getParameter("acccessrequests"); // parse List to String
Iterator iterator = jobList.iterator();
while (iterator.hasNext())
{
accessRequest = (AccessRequest) iterator.next());
%>
<tr>
<td><input type="checkbox" name="<%accessRequest.getApproval_ind(); %>"></td>
<td><input type="text" id="jobname' name="accessRequests" value="job_name"></td>
答案 0 :(得分:2)
HttpServletRequest#getParameter()
返回String
,而不是List
。所以编译器是对的。
我不确定您是如何将List
设置为请求参数的,没有像HttpServletRequest#setParameter()
这样的方法。所以你可能会误解一些东西。通常的方法是将列表设置为HttpServletRequest#setAttribute()
的请求属性,并通过EL(表达式语言)在JSP中访问它,如${attributeName}
。您通常也使用JSTL <c:forEach>
标记迭代列表。
假设您已使用如下的Servlet在请求范围中设置列表...
request.setAttribute("list", list);
...这是一个如何迭代列表的启动示例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<table>
<c:forEach items="${list}" var="item">
<tr>
<td>${item.property1}</td>
<td>${item.property2}</td>
<td>${item.property3}</td>
</tr>
</c:forEach>
</table>
答案 1 :(得分:0)
Alhamdulillah,感谢上帝!
这对我很有帮助。我尝试构建自己的java Web框架。 在阅读本QA之前,我不知道如何从JSP访问对象(例如,表行)。 我只是重定向它,并将数据库代码留在JSP中,由DreamWeaver生成。现在我知道该怎么做了。例如,这是一个BiroController,它显示来自Biro Table的数据:
public void index() throws IOException, ServletException {
List list=new ArrayList();
list.add(BiroModel.create("1", "SDM"));
list.add(BiroModel.create("2", "Keuangan"));
request.setAttribute("list", list);
super.index();
}
首先,我填充一个数组(随后,这将来自数据库表)。然后设置request属性,然后调用超类索引方法:
public void index() throws IOException, ServletException {
RequestDispatcher rd = request.getRequestDispatcher(viewPage);
if(rd!=null){
rd.forward(request, response);
}else{
PrintWriter out = response.getWriter();
out.print("can not dispatch to " + viewPage);
}
//OLD Code : response.sendRedirect(ServletUtil.getBaseUrl(request) + viewPage)
}
而且,我按照你在JSP中的指示做了:
<c:forEach items="${list}" var="item">
<tr>
<td>${item.idbiro}</td>
<td>${item.biro}</td>
</tr>
</c:forEach>
我使用Netbeans,因此我可以从可用库列表中轻松选择JSTL库
它迷人地工作.. :) tq