昨天上午有人引導我走向spring MVC form tld,從那時起我一直在努力做一件看起來非常簡單的任務!它看起來像一個簡單的解決方案,但我似乎無法做到。我在想我必須誤解一些非常基本的東西,以至於無法使其工作。我在想,如果有人能指出我要去哪裏錯了?form:select返回一個逗號分隔的列表
目前我所要做的就是在jsp select中顯示一個值列表。
模型實體很簡單(我意識到需要一點點微調)
@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中的spring標記可以理解User對象的結構。這意味着我現在傳遞了兩個屬性 - 用戶,據我瞭解,表單理解結構(儘管也許我更聰明,這也會返回選定的對象?)和用戶列表,這是實際數據。
在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>
我已經配對這個回落的簡單,而且已經嘗試了不少東西(項目值,itemlabel在其他之中)。此代碼返回所有數據,但以逗號分隔的所有值(id,名稱,密碼,日期)列表中返回。無論我嘗試使用path,itemvalue等,它都不會顯示一個字段。理想情況下,我想顯示 - userName(userId) - 但在這個階段,我可能會解決爲userName!
從我拍打我的印象是不連接該用戶是用戶列表中的項目。如果我覺得我越來越接近它抱怨userId(etc)不是一個數組類型的方法(我認爲它意味着它正在查看列表),或者它似乎已經理解了它沒有數據的屬性(我猜測意味着它沒有拿起清單!)。
任何人都可以幫忙!
只是添加這是我認爲我得到的最接近,但它抱怨用戶不是有效的用戶屬性?
<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'中的元素的逗號分隔值..但你想設置它們作爲選擇的選項?) – 2015-03-19 10:48:53
是的我想在選擇列表中使用用戶的元素。因此,例如,而不是看到「userId1,鮑勃霍斯金斯,pwdcode,12/01/2015 00:00:00」(等),我會至少只看到「鮑勃霍斯金斯」,並最好能夠將其設置爲「鮑勃霍斯金斯(UserId:userid1)「。我想我應該能夠通過設置窗體來做到這一點:選擇路徑或形式:options itemLabel屬性?謝謝 – gringogordo 2015-03-19 11:07:12