簡體   English   中英

將對象從下拉列表(.jsp)傳遞到控制器

[英]Pass object from Dropdown list (.jsp) to Controller

我試圖將一個對象(或只是ID)傳遞給我的控制器,該控制器是我從下拉列表中選擇的。 有2個類: productcategoryproduct包含一個外鍵,這是category的ID)這是我將其加載到的方式:

@RequestMapping(value="/edit", method=RequestMethod.GET)
public ModelAndView edit(@RequestParam(required=false) Long id) {
    ModelAndView mv = new ModelAndView();
    if (id == null) {
        mv.addObject(new Product());
    } else { 
        mv.addObject("product", productDao.findById(id));
    }
    mv.addObject("category", categoryDao.findAll());
    mv.setViewName("edit-product");
    return mv;
}

如您所見,我正在將對象類別傳遞到我的.jsp中。 我正在顯示用戶可以選擇的所有類別。

<select name="category">
<c:forEach items="${category}" var="category">
    <option name="category" value="${category.id}">${category.name}</option>
</c:forEach>
</select> 

該值應該傳遞給我的控制器,但是我不知道如何傳遞它。

@RequestMapping(value="/save", method=RequestMethod.POST)
public String save(Product product, Category category, Model model) {  
    product.setCategory(category); //not working, since the parameter isn't correct
    Product result = productDao.save(product);
    // set id from create
    if (product.getId() == null) {
        product.setId(result.getId());
}

嘗試這樣的事情:

@RequestMapping(value="/save", method=RequestMethod.POST)
public String save(@ModelAttribute Product product,@ModelAttribute Category 
category, Model model) {  
// Your code here, 
//at this point you have full access to Product and Category object 
//One more thing your input tag's name attribute must have same name as of 
//your POJO's fields name 
}

即使是為了更好地說明和簡化,也請嘗試使用spring表單標簽,該標簽提供了更多的設施來處理這種情況

將一個ID添加到您的選擇中-該ID作為請求參數添加。

<select name="category" id="categoryId">

並獲得價值的控制器

public String save(@RequestParam("categoryId") Long categoryId, Model model)

如果您的產品產品具有categoryId字段(帶有setter),則可以僅使用產品產品,而不能使用長的categoryId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM