有一个jsp页面说view.jsp,所以通过spring它呈现为view.htm,确定没问题,但现在我想传递一个列表给它,并根据列表中给定的id, view.htm更改为view.htm / {id},但如果我有100个数据,那么我需要100个jsp页面吗?我怎么能通过弹簧解决这个问题
答案 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中,您只需显示有关返回对象的任何信息。
希望有所帮助。