繁体   English   中英

使用JSP Spring MVC Hibernate从数据库动态创建复选框

[英]Dynamically create checkbox from database using jsp spring mvc hibernate

业务规则:一个事件具有许多设备,并且一个设备出现在许多事件中。

我试图根据数据库中的设备表动态生成一个复选框。 我将使用此复选框添加具有许多设备的事件。 我在弄清楚如何将jsp中的设备对象转换为Set(collection),然后将其添加到事件模型时遇到问题。

  1. 拉出设备清单表格数据库。
  2. 将该设备列表传递给jsp
  3. 将设备列表转换为Set集合,因为设备在事件模型中是Set。
  4. 更新数据库,以便它可以在许多设备上发生事件。

这是事件模型。

public class Event {

private int eventId;
private Date startDate;
private Date endDate;
private String eventName;
private String location;
private String description;
private Set<Equipment> lstEquipments = new HashSet<Equipment>();
private Set<Staff> lstStaffs = new HashSet<Staff>(); 

//获取和设置以及构造函数

这是设备模型。

public class Equipment {

private int equipmentId;
private String equipment_Name;
private Set<Event> lstEvents = new HashSet<Event>(); 

//获取和设置

这是jsp形式。

        <table>
        <form:form action="saveEvent" method="POST"
            modelAttribute="eventModel">
            <form:hidden path="eventId" />
            <tr>
                <td>Start Date (YYYY-MM-DD) :</td>
                <td><form:input path="startDate" /></td>
                <td><form:errors path="startDate" cssClass="error"></form:errors></td>
            </tr>
            <tr>
                <td>End Date(YYYY-MM-DD) :</td>
                <td><form:input path="endDate" /></td>
                <td><form:errors path="endDate" cssClass="error"></form:errors></td>
            </tr>
            <tr>
                <td>Event Name :</td>
                <td><form:input path="eventName" /></td>
                <td><form:errors path="eventName" cssClass="error"></form:errors></td>
            </tr>
            <tr>
                <td>Location :</td>
                <td><form:input path="location" /></td>
                <td><form:errors path="location" cssClass="error"></form:errors></td>
            </tr>
            <tr>
                <td>Description :</td>
                <td><form:input path="description" /></td>
                <td><form:errors path="description" cssClass="error"></form:errors></td>
            </tr>
            <tr>
                <td>Equipments :</td>
                <td><form:checkboxes path="lstEquipments" items="${listEquipment}"/></td>
                <td><form:errors path="lstEquipments" cssClass="error"></form:errors></td>
            </tr>
            <tr>
                <td>Staffs :</td>
                <td><form:checkboxes path="lstStaffs" items="${listStaff}"/></td>
                <td><form:errors path="lstStaffs" cssClass="error"></form:errors></td>
            </tr>
            <tr>
                <td colspan="2" align="center"><input type="submit"
                    value="Save"></td>
            </tr>
        </form:form>
    </table>

这是保存事件的控制器。

    @RequestMapping(value ="/saveEvent", method = RequestMethod.POST)
public ModelAndView submitForm(ModelAndView mnv, @Valid @ModelAttribute("eventModel") Event event, BindingResult result) throws IOException {
    //pull a list of available Equipments from the relational database.
    Set<Equipment> listEquipment = equipmentDAO.list();
    mnv.addObject("listEquipment", listEquipment);

    //pull a list of available Staffs from the relational database.
    Set<Staff> listStaff = staffDAO.list();
    mnv.addObject("listStaff", listStaff);

    if(result.hasErrors()) {
        //pull a list of Event from DB for display in JSP.
        Set<Event> listEvent = eventDAO.list();
        mnv.addObject("listEvent", listEvent);

        mnv.addObject("eventModel", event);
        mnv.setViewName("index");
        return mnv;
    }

    //update the database with a new event.
    eventDAO.saveOrUpdate(event);

    //pull a list of Event from DB for display in JSP.
    Set<Event> listEvent = eventDAO.list();
    mnv.addObject("listEvent", listEvent);

    mnv.addObject("eventModel", new Event());
    mnv.setViewName("index");
    return mnv;
}

在要输出设备的form:checkboxes标记中,确保像下面这样指定itemLabel和itemValue属性:

<form:checkboxes path="lstEquipments" items="${listEquipment}" itemLabel="equipment_Name" itemValue="equipmentId"/>

现在,在保存方法中,您将为每个所选设备拥有唯一的标识符。 您可以访问这些ID(从mnv对象的lstEquipment属性中)并从数据库中获取其全名,以便可以创建一堆Equipment对象并将其添加到集合中并将该集合放入Event对象中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM