当前位置: 首页 > 知识库问答 >
问题:

将对象从下拉列表(. jsp)传递给控制器

商绍元
2023-03-14

我正在尝试将一个对象(或只是ID)传递给我的控制器,我从下拉列表中选择它。有2个类:产品和类别(产品包含一个外键,这是类别的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());
}

共有2个答案

赵俊晤
2023-03-14

试试这样的东西:

@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 form标签,它提供了更多的工具来处理这种情况

丌官瀚
2023-03-14

将Id添加到select-该Id将作为请求参数添加。

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

和控制器来获取值

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

如果您的产品有分类ID字段(带有setter),您可以只使用产品产品而不是长分类ID

 类似资料:
  • 给定以下代码: 和一个jsp: 如何将在下拉列表中选择的值传递回Spring控制器?目前,当我尝试执行此操作时,得到的请求参数无效。

  • 我正在尝试在更改选项后将我的Thymeleaf超文本标记语言中已经提供的List传回控制器。我尝试过隐藏输入,但不幸的是,它还不起作用。 我的表单如下所示(控制器已经提供了“电影”列表) 我的控制器看起来像这样: 期待有人能帮助我!

  • 我正在尝试获取一个将列表从 JSP 传递到控制器的示例以工作: http://viral Patel . net/blogs/spring-MVC-multi-row-submit-Java-list/ 这个例子的问题是我没有让JSP/WEB content/we b-INF/JSP/add _ contact . JSP工作。他有一句台词: 我得到varstatus变量的错误。他从哪里得到这个变

  • 我正在开发将复杂数据从window.open()传递到MVC Controller action方法参数的javascript功能。我能够通过构建查询字符串并从控制器中的[FromQuery]检索它们来实现它。 但我的问题是,我想将数据作为模型对象传递。在窗户里可以吗。打开() 下面是我的javascript代码 如您所见,我可以在URL中传递数据,但它似乎是公开的。那么,有没有办法传入var u

  • 问题内容: 我正在将一个对象传递给我的控制器,如下所示: 我的控制器将其视为它正在寻找的对象: 我的问题是我只想再传递一个字符串。我知道我可以制作特定于视图的模型,但我想知道是否可以执行以下操作: 我没有运气就尝试了以下方法: 但是复杂对象只是作为null来的。有没有办法我也可以传递对象和字符串? 问题答案: 尝试将字符串项添加到已有的JSON中。不要对其进行字符串化,否则它将发送一个大字符串,您

  • 问题内容: 当我尝试将Servlet中的列表值设置为会话变量并像JSP一样访问它时, 做得到 JSP 我在JSP中遇到错误,因为“列表无法解析为类型” 那我该怎么做呢?我想将列表从Servlet传递到JSP并填充一个下拉列表。 问题答案: 您要导入列表和演员表吗?