【发布时间】:2015-03-19 09:56:47
【问题描述】:
昨天早上有人指导我使用 spring MVC 表单 tld,从那以后我一直在努力做一个看起来非常简单的任务!它看起来像一个简单的解决方案,但我似乎无法做到正确。我在想我一定是误解了一些非常基本的东西,无法让它发挥作用。我想知道是否有人可以指出我哪里出错了?
目前我要做的就是在 jsp 选择中显示值列表。
模型实体非常简单(我意识到需要一点微调)
@Entity
@Table(name = "user")
public class User {
@Id private String userId;
private String userName;
private String passwordCode;
private Date dateOfBirth;
public String getUserId() {
return userId;
}
public String getUserName() {
return userName;
}
public String get PasswordCode () {
return passwordCode;
}
public Date getDateofBirth() {
return dateOfBirth;
}
}
我的控制器目前也很简单
@Controller
@RequestMapping("/")
public class HomeController extends JFrame {
@Autowired private MeetingDAO meetingDAO;
@RequestMapping(method = RequestMethod.GET)
public String HomePage(Model model) {
List<User> userlist = userDAO.ListAll();
model.addAttribute("userlist ", userlist);
model.addAttribute("User", new User());
return "Home";
}
我通过在堆栈溢出上使用另一个 q/a 得到了这么多,我想知道这是否是我误解的根源。我一直将值列表作为属性传递。这样做时我遇到了很多错误,直到我意识到我还需要“传递”用户模型,以便 jsp 中的弹簧标签能够理解用户对象的结构。这意味着我现在要传递 2 个属性 - 用户,因为我理解它只是为了让表单理解结构(尽管如果我更聪明的话,这也会返回所选对象?)和用户列表,它是实际数据。
在jsp中
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<body>
<h2>Users List Page</h2>
<form:form action="/home" method="Post" modelAttribute="User" >
<form:select path="userName">
<form:options items="${userlist}"/>
</form:select>
<input type="submit" id="submit" value="View"/>
</form:form>
</body>
</html>
为了简单起见,我已将其配对,但尝试了很多东西(itemvalue,itemlabel 等)。此代码返回所有数据,但以逗号分隔的所有值(id、名称、密码、日期)列表形式返回。无论我尝试对路径、项目值等做什么,它都不会只显示一个字段。理想情况下,我希望显示 - userName (userId) - 但在这个阶段我可能会选择 userName!
从我的印象中我的印象是没有连接用户是用户列表中的一个项目。如果我觉得我快接近了,它会抱怨 userId (etc) 不是数组类型的方法(我认为这意味着它正在查看列表),或者如果它似乎已经理解了它没有数据的属性(我猜测意味着它没有选择列表!)。
谁能帮忙!?
只是添加这是我认为我得到的最接近但它抱怨 User 不是 User 的有效属性?
<form:form action="home" method="Post" modelAttribute="User" >
<form:select path="User" >
<form:options items="${userlist}" itemValue="userId" itemLabel="userName" />
</form:select>
<input type="submit" id="submit" value="View"/>
</form:form>
【问题讨论】:
-
我很抱歉.. 但是您到底在寻找什么? (我假设..您将
userlist属性添加到模型中.. 当您检索它时.. 您在userlist.. 中获得元素的逗号分隔值.. 但您想将它们设置为选择的选项?) -
是的,我想在选择列表中使用用户的元素。因此,例如,与其看到“userId1,Bob Hoskins,pwdcode,12/01/2015 00:00:00”(等等),我至少会看到“Bob Hoskins”,理想情况下能够将其设置为“Bob Hoskins” (用户 ID:用户 ID1)”。我想我应该可以通过设置 form:select path 或 form:options itemLabel 属性来做到这一点?谢谢
标签: java jsp spring-mvc