2015-03-31 48 views
0

我正在生成下拉值的ArrayList並將其分配給請求屬性。我可以直接從我的jsp頁面檢索它,還是需要做其他事情?因爲我得到如何從請求屬性獲取表單選項

Type [java.lang.String] is not valid for option items exception 

在我的控制器:

<form:options items="${LCCLSTypeCode}" itemValue="idValue" itemLabel="displayValue"/> 

我已經瀏覽足以看出其中的ArrayList已經通過model.addAttribute分配例子:

request.getSession().setAttribute("LCCLSTypeCode", new ArrayList(Arrays.asList(arr))); 
在我的jsp頁面

我想知道我是否可以這樣做,我在做什麼錯誤?

回答

0

您,是因爲形式傳遞一個映射到會話:選項採用idvalue和顯示值

+0

當我打印的ArrayList不同的例外,它顯示的東西如下所示:ArrayList arrayList = new ArrayList(Arrays.asList(arr)); System.out.println(「arrayList:」+ arrayList);'打印結果爲'[idValue:;}; displayValue:, idValue:AddtlConditions; displayValue:附加條件, idValue:DocsRequired; displayValue:需要文件, idValue:DraftsAt2; displayValue:Drafts At Terms, idValue:Charges; displayValue:費用和收費說明, idValue:MerchDesc; displayValue:商品描述, idValue:Variance; displayValue:Variance]'它沒有鍵值對嗎? – vysh 2015-04-01 04:51:26

+0

我試着將arraylist轉換爲Map Map HashMap = new HashMap();對於(int i = 0; i vysh 2015-04-01 04:52:52

0

下拉需要身份和價值,所以你必須使用地圖鍵值對。

0

將下拉圖添加到模型屬性並在jsp頁面中檢索它,解決了錯誤。 但我的主要動機是將它連接到會話對象,我無法做到這一點。因爲在我的表單提交中,我只會再次重定向到同一頁面。因此,如果我將下拉菜單附加到會話對象,則不必每次都生成下拉列表並將其附加到模型對象。

控制器:

ModelAndView modelAndView = new ModelAndView(); 
modelAndView.setViewName("menu1"); 
modelAndView.addObject("command", new ClauseData()); 
modelAndView.addObject("LCCLSTypeCode", newMap); 
return modelAndView; 

JSP頁面:

<% 
Map LCCLSTypeCode = (Map) request.getAttribute("LCCLSTypeCode"); 
System.out.println("LCCLSTypeCode:"+LCCLSTypeCode); 
%> 
. 
. 
. 
. 
<form:select path="typeCode"> 
<form:options items="<%=LCCLSTypeCode%>" itemValue="idValue" itemLabel="displayValue"/> 
</form:select> 

不過現在我正在我已經發布了一個separate question

+0

參考這裏回答http://stackoverflow.com/questions/29387819/org-springframework-beans-notreadablepropertyexception-invalid-property-idvalu/29403992#29403992 – thoitbk 2015-04-02 02:22:47