【问题标题】:how to display model attribute in jsp using Spring MVC?如何使用 Spring MVC 在 jsp 中显示模型属性?
【发布时间】:2013-03-23 10:31:21
【问题描述】:

其实我的应用有 Spring MVC...

我有 User.jsp,在此我正在创建一些空表单(文本框、textarea..)我在我的 Controller 类中使用以下方法显示表单。以下代码用于在前端 jsp 上添加空表单。

@RequestMapping(value = "user", method = RequestMethod.GET)
public String user(Model model) throws Exception {
    model.addAttribute("userForm", new UserForm());

    return "profile/user";
}

现在我正在数据库中获取用户窗体(3 行)。

那么..如何添加模型属性,如果我们添加这个是他们对模型属性的任何覆盖?

如何使用JSTL将此模型属性显示到Jsp中?

请建议我,我坚持这一点..

【问题讨论】:

  • 可以在jsp中像${userForm.someField}一样访问
  • 以上代码给出了空表单,但是如何为同一个表单添加一个模型属性呢?

标签: java spring spring-mvc jstl


【解决方案1】:

示例代码

class UserForm {
    private String name;
    private String address;

    //setter and getter

}

在你的控制器中

 @RequestMapper(value="/user")
    public ModelAndView user(){
        ModelAndView mav = new ModelAndView("userForm") ;
        List<UserForm> userForms = yourDatabaseCall();
        mav.addObject("userForms", userForms);  
        return mav;``
    }

在jsp页面中:

<c:forEach items="${userForms}" var="userForm">     
   <c:out value="${userForm.name}"/>
   <c:out value="${userForm.address}"/>
</c:forEach>

【讨论】:

  • 听到我添加了两次,它有覆盖(第一个是显示空表单目的第二个是数据库数据)
  • 两次请求进入控制器中的相同方法。如果列表为空,则显示为空表单。否则表单包含数据
  • 正确..它正在显示..但数据库有两个值,所以表单也会在页面中显示两次..它是否正确?如果正确,我的页面只有一个表单。
  • 你为什么不用桌子?像这样的动态情况,我们通常使用表或 div .. jstl foreach 在表内和 tr 外。对于 List 中的每一行,在 jsp 中创建一个新行
【解决方案2】:

您可以将 userFomrs 列表添加为模型属性

List<UserForm> userForms = yourDatabaseCall();
model.addAttribute("userForms", userForms);     

在 JSTL 中你可以迭代它

<c:forEach items="${userForms}" var="userForm">     
   // Do something
</c:forEach>

【讨论】:

  • @NarasimhaKoppadi:尝试建议的方法,如果遇到任何特定错误,请返回。
猜你喜欢
  • 2017-07-23
  • 2013-08-27
  • 2013-06-01
  • 2013-12-08
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
相关资源
最近更新 更多