【问题标题】:How to create a Select tag dynamically in jsp?如何在jsp中动态创建Select标签?
【发布时间】:2021-07-16 12:22:47
【问题描述】:

好吧,我在我的 jsp 表单中创建了一个选择标签,我想从 mysql 数据库中动态检索数据并显示在 jsp 页面选择标签中:

jsp select标签基本代码:

  <label for="course">Ward No:</label>
                                    <div class="form-select">
                                <select name="Ward" id="course">
                                    <option value="0">--Select Ward No---</option>
                                    <option value="ward1">1</option>
                                    <option value="ward2">2</option>
                                    <option value="ward3">3</option>
                                    <option value="ward4">4</option>
                                    <option value="ward5">5</option>
                                    <option value="ward6">6</option>
                                    <option value="ward7">7</option>
                                    <option value="ward8">8</option>
                                    <option value="ward9">9</option>
                                    <option value="ward10">10</option>
                                    <option value="ward11">11</option>
                                    <option value="ward12">12</option>
                                </select>

我想从上面显示从 1 到 12 的数字,但是如果数据库中的一个条目有一个用于数据库表列“wardNo”的数字,我希望我的 jsp 不显示它。

并且只显示除了已经存在的数字之外的数字。 例如:如果 db 表列有 12 则 jsp 表单选择标签必须显示 1 到 11。

但是我一直在寻找实现这一点的最佳方法,在 MVC 模型中使用数组列表来实现这一点更好还是在 jsp 中完成这一切更好?最好的方法是什么?

我目前正在学习 Java 开发,所以请原谅任何错误或不擅长遵循最佳实践。

提前感谢大家帮助我。

【问题讨论】:

    标签: java sql jsp web


    【解决方案1】:

    从 DB 中获取所有映射的病房详细信息,并在 MVC 控制器中形成可用的病房详细信息列表,并使用模型将其发送到 UI,

    List<Integer> categoryList = getSavedWardNumbers();
    List<Ward> wardDetails = new ArrayList<Ward>();
    
    for (int i = 0; i < 12; i++)
    {
        if (!categoryList.contains(i))
        {
            Ward wardObj = new Ward();
            wardObj.setName("Ward" + i);
            wardObj.setId(i);
                        
            wardDetails.add(wardObj);
        }
    }
    model.addAttribute("wardDetails", wardDetails);
    

    在UI中使用JSTL标签遍历病房详情并形成动态选项

    <select name="Ward" id="course">
        <option value="">--Select Ward No---</option>
        <c:if test="${!empty wardDetails}">
            <c:forEach items="${wardDetails}" var="wardObj" varStatus="loop">
                <option value="${wardObj.name}">${wardObj.id}</option>
            </c:forEach>
        </c:if>
    </select>
    

    【讨论】:

    • 非常感谢您的帮助,这是一种非常有效和更好的方法,非常感谢。
    猜你喜欢
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多