2015-03-19 90 views
0

昨天上午有人引導我走向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> 
+0

我很抱歉..但是你到底在找什麼呢? (我假設..你添加了'userlist'屬性到模型..當你正在檢索它..你得到'userlist'中的元素的逗號分隔值..但你想設置它們作爲選擇的選項?) – 2015-03-19 10:48:53

+0

是的我想在選擇列表中使用用戶的元素。因此,例如,而不是看到「userId1,鮑勃霍斯金斯,pwdcode,12/01/2015 00:00:00」(等),我會至少只看到「鮑勃霍斯金斯」,並最好能夠將其設置爲「鮑勃霍斯金斯(UserId:userid1)「。我想我應該能夠通過設置窗體來做到這一點:選擇路徑或形式:options itemLabel屬性?謝謝 – gringogordo 2015-03-19 11:07:12

回答

0
<form:form action="home" method="Post" modelAttribute="User" > 
<form:select path="userId" > 
    <form:options items="${userlist}" itemValue="userId" itemLabel="userName" /> 
</form:select> 
<input type="submit" id="submit" value="View"/> 

該代碼將有選擇的用戶id在用戶對象設定,當您發佈的形式,你會得到。

路徑變量應該綁定到支持對象屬性這裏支持對象是用戶,所以你應該綁定它的userId屬性。

+0

你能指定你添加哪個對象作爲模型屬性嗎?我想這是您在問題(代碼)中指定的用戶對象。 – tofindabhishek 2015-03-19 12:35:46

+0

當我這樣做時,我得到了錯誤「Bean class [[Ljava.lang.Object;]:」的Invalid property'userId')。對我來說這似乎很奇怪,就好像我把path =「User」一樣,它至少意識到它應該查看一個User對象和錯誤,並使用Bean類的[User]的無效屬性[com.org.model.Meeting]? (道歉我分心,編輯速度太慢。) – gringogordo 2015-03-19 12:39:48

+0

非常感謝所有幫助。事實上,雖然這非常有用,但它也讓我意識到我一直在錯誤的地方看1-2天!當我從存儲過程中填充UserList而不是直接從休眠時,它實際上並不是一個滿足逗號分隔值列表的會議對象列表。抱歉,我沒有發佈這段代碼(或者直到現在再看一遍)。哎喲! – gringogordo 2015-03-20 10:03:26

0

你可以嘗試設置選項如下(假設userlistUser對象的列表,並有場userIduserName):

<c:forEach var="u" items="${userlist}">    
    <form:option item="${u}" itemValue="${u.userId}" itemLabel="$(u.userName}" /> 
</c:forEach> 
+0

你的意思是完全取消表單標籤。這是我之前所做的事情,但我希望能讓春天的事情發展下去!! \t gringogordo 2015-03-19 12:58:30

0

非常感謝所有幫助。事實上,雖然這非常有用,但它也讓我意識到我一直在錯誤的地方看1-2天!當我從存儲過程中填充UserList而不是直接從休眠時,它實際上並不是一個滿足逗號分隔值列表的會議對象列表。抱歉,我沒有發佈這段代碼(或者直到現在再看一遍)。哎喲!