【问题标题】:How to insert data from two table in one jsp in spring mvc an如何在spring mvc中的一个jsp中插入两个表中的数据
【发布时间】:2017-05-03 12:18:10
【问题描述】:

我正在使用 Spring mvc 并尝试在一个 jsp 中插入两个表中的数据

我的桌子:

1.Cars
  Id
  Name
  CityId(FK) 

2.City
  Id
  Name

我在下面尝试过,但它只在列表中选择,我希望它是输入文本来插入数据

我的豆子:

汽车类:

@Entity
@Table(name="CARS")
public class Car {
  @Id
  @Column(name="ID", nullable=false, unique=true)
  @GeneratedValue(strategy=GenerationType.AUTO)
  private int id;

  @ManyToOne
  @JoinColumn(name="CITY_ID")
  private City city;      
  // get and set
}

类城市

@Entity
@Table(name="CITY")
public class City {
  @Id
  @Column(name="ID", nullable = false, unique = true)
  @GeneratedValue(strategy=GenerationType.AUTO)

  private int id;
  @Column(name = "NAME")
  private String name;
  // get and set
}

类控制器:

@RequestMapping(value="/CreateCar", method = RequestMethod.POST)
public ModelAndView setCreateCarPage(HttpServletRequest request, 
                                     HttpServletResponse response,
                                     ModelMap model, @RequestParam("citySelected") Integer citySelected,@ModelAttribute("createCar") Car createCar)    {
  City myCity = cityService.getCityById(citySelected);
  createCar.setCityId(myCity);

  carService.createCar(createCar);
  return new ModelAndView("createCar");
 }

JSP:

<form:form modelAttribute="createCar" method="POST" commandName="createCar" action="/CreateCar" enctype="multipart/form-data">
    <fieldset style="width:300px">

    <label>Name of Car</label>
        <form:input path="name" id="name"/>

    <label>Name of City</label>
        <select name="citySelected">
            <c:forEach items="${cityList}" var="city">
                <option value="${city.id}">${city.name}</option>
            </c:forEach>
        </select>
  <input class="btn btn-danger" type="submit" value="Create" style="width:100px;" />
    </fieldset>
</form:form>

如何为汽车和城市的名称创建/插入数据?

【问题讨论】:

    标签: java hibernate jsp spring-mvc


    【解决方案1】:

    您的代码中几乎没有错误。

    首先在您的控制器中,您有一个名为 setCityId() 的方法,但参数是一个城市。你也不需要这里的请求/响应。

    在您的请求名称中使用大写代替 CreateCar,使用 createCar

    你应该改成这样:

    @RequestMapping(value="/createCar", method = RequestMethod.POST)
    public ModelAndView setCreateCarPage(@ModelAttribute("createCar") Car createCar)    {
      carService.createCar(createCar);
      return new ModelAndView("createCar");
     }
    

    在您的 JSP 代码中,您需要将下拉菜单的 city.id 设置为汽车

    <form:form modelAttribute="createCar" method="POST" commandName="createCar" action="/createCar" enctype="multipart/form-data">
        <fieldset style="width:300px">
    
        <label>Name of Car</label>
            <form:input path="name" id="name"/>
    
        <label>Name of City</label>
            <select name="citySelected" path="city.id">
                <c:forEach items="${cityList}" var="city">
                    <option value="${city.id}">${city.name}</option>
                </c:forEach>
            </select>
      <input class="btn btn-danger" type="submit" value="Create" style="width:100px;" />
        </fieldset>
    </form:form>
    

    【讨论】:

      【解决方案2】:

      您好,我了解您的问题,您正在为两个表使用 name 列,您可以通过添加前缀作为表名来处理此问题,例如:

      对于汽车名称:name="Car.name"

      对于城市名称:name="Car.City.name"

      通过放置这个您的问题将得到解决。

      【讨论】:

        【解决方案3】:

        在你的 jsp 中像这样更新你的选择:

        <form:form modelAttribute="createCar" method="POST" commandName="createCar" action="/CreateCar" enctype="multipart/form-data">
            <fieldset style="width:300px">
        
            <label>Noi dung</label>
                <form:input path="name" id="name"/>   
            <label>Tinh/Thanh pho</label>
              <form:select path="city">
                <form:options items="${cityList}" itemLabel="name" itemValue="id"/>
            </form:select>
          <input class="btn btn-danger" type="submit" value="Create" style="width:100px;" />
             </fieldset>
        </form:form>
        

        并在您的控制器中更新此方法:

        @RequestMapping(value="/CreateCar", method = RequestMethod.POST)
        public ModelAndView setCreateCarPage(HttpServletRequest request, 
                                             HttpServletResponse response,
                                             ModelMap model,@ModelAttribute("createCar") Car createCar)    {
           LOG.info("current city "+createCar.getCity().toString());
        carService.createCar(createCar);
          return new ModelAndView("createCar");
         }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-30
          • 2013-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多