2011-03-15 97 views
0

我使用spring 3.我試圖在jsp中顯示一個對象的值。不顯示字符串列表

public class UserForm implements Serializable { 

    private List<String> values; 
    private String date; 
    ... 
} 

這裏是我的控制器:

@Controller 
@RequestMapping("/user.htm") 
public class UserController { 

    @Autowired 
    private IUserService userService; 

    @RequestMapping(method = RequestMethod.GET) 
    public String userStat(Model model) { 

     UserForm stat = userService.populateStatistique(); 
     stat.setDate("today"); 
     model.addAttribute("statistiqueForm", stat); 
     return "userStat"; 
    } 
} 

這裏是我的jsp:

<form:form commandName="userForm" name="userForm"> 
    Date: <form:input path="date"></form:input> 
    <br/> 
    Expediteur: 
    <form:select path="values" items="${values}" /> 
    <br/> 
    <input type="submit" value="create" /> 
</form:form> 

在JSP中,我可以看到日期字段的今天的價值,但該列表框爲空。

有什麼想法嗎?

感謝

+0

你在哪裏在你的Controller中填充'values'? – adarshr 2011-03-15 16:36:34

+0

我假設'userService.populateStatistique();' - 填充'列表值;' - 調試該行並查看該行是否正在填充您的值。 – 2011-03-15 16:40:28

+0

確切地說,由userService.populateStatistique() - 當我調試我看到值 – redfox26 2011-03-15 16:56:37

回答

0

您正確地將表單對象傳遞給jsp頁面。在該頁面中,您有一個列表框,其中包含潛在值列表和所選值的列表。對象表單包含選定值的列表,但您還應該設置包含所有潛在值的列表。實際上,您在jsp中引用$ {values},但不會將它傳遞給jsp。您應該將此代碼添加到您的控制器:

model.addAttribute("values", potentialValueList); 

我也建議你更改列表的名稱,以避免混淆,所以這將是很容易理解,從選擇的值潛在值的差。

+0

確定,但現在列表框爲空...控制器,我可以看到UserForm.values有2項 – redfox26 2011-03-15 20:36:16

+0

是的,這是正確的,因爲select是空的,您必須通過model.addAttribute將潛在值的列表傳遞給頁面。從空列表中選擇兩個值是不可能的,因此您必須填充該列表。 – javanna 2011-03-15 21:05:04

+0

我已經填充此列表... UserForm stat = userService.populateStatistique();我嘗試在服務層中提供數據...不是個好主意嗎? – redfox26 2011-03-15 22:12:14

2

好吧,如果你想在JSP訪問使用addAttribute("values", list)。你目前沒有設置它,所以它是空的。

如果該列表包含在statistiqueForm對象中,則使用items="${statistiqueForm.values}"

+0

好,謝謝將嘗試 – redfox26 2011-03-15 22:19:19