spring jsp view问题

时间:2010-12-10 11:15:09

标签: java jsp spring-mvc

有一个jsp页面说view.jsp,所以通过spring它呈现为view.htm,确定没问题,但现在我想传递一个列表给它,并根据列表中给定的id, view.htm更改为view.htm / {id},但如果我有100个数据,那么我需要100个jsp页面吗?我怎么能通过弹簧解决这个问题

2 个答案:

答案 0 :(得分:2)

您可以在请求中添加列表,并在view.jsp

中对其进行迭代

喜欢So(夸张的例子),

List<String> datas = new ArrayList<String>();
//Add 100 datas...
request.setAttribute("datas", datas);

现在,您可以使用JSTL迭代它...在view.jsp

<c:if test="${requestScope.datas != null}">

</c:if>

或者,我没有正确理解你?


根据您的问题

编辑,您仍然可以遍历列表中的数据并创建一个锚点标记,将数据ID附加到view.htm

某些东西,比如(在伪代码中)

$ {someData.description}

someData是第一篇文章中替换的datas。锚标记将位于<c:if>标记内,因此如果数组中有100个项目,则您将拥有100个锚标记。

答案 1 :(得分:0)

因此,如果您有一个对象集合,您希望能够单独查看每个对象,并且您希望一个视图能够处理所有这些。好的,我希望您的对象列表实际上是存储在数据库中的所有对象。所以你有一个动作返回所有对象的列表。您可以使用The Elite Gentleman的示例为列表中的每个项目生成链接。该链接转到另一个端点,将对象的数据库ID传递给控制器​​。该控制器使用该id获取对象,并使用该对象呈现视图。这是一个例子:

// Your 'index' action
@RequestMapping('myObjectType/index/')
public ModelAndView index() {
  List<MyObject> list = // Get your objects from the database
  return new ModelAndView("index", "list", list); // insert your list into the MAV
}

// Your 'show' action
@RequestMapping('myObjectType/show/{id}') 
public ModelAndView show(@PathVariable("id") String id) {
  MyObject obj = // Get your object from the database from the id param
  return new ModelAndView("show", "obj", obj);
}

因此,在index.jsp中,迭代列表对象并为集合中的每个项创建一个链接,该链接指向传递对象id的“show”端点。然后在show.jsp中,您只需显示有关返回对象的任何信息。

希望有所帮助。