如何通过JSTL列表迭代以匹配Java Spring MVC中的条件



我有一个JSP页面。我从弹簧控制器传递了2个模型对象。

  1. 资产(获取资产(。
  2. 资产(获取所有资产(

我想设置选项,如果条件匹配。

我的代码

<table>
    <tr>
        <td>Asset Id :</td>
        <td>
        <form id="getAssetForm" method="get">
            <select id="assetid" name="assetid" onchange="submitForm(this);">
                    <c:if test="${not empty assets}">
                        <c:forEach items="${assets}" var="assetsproperties">
                            <c:choose>                          
                                <c:when test="${not empty asset}">
                                    <c:forEach items="${asset}" var="assetobj">
                                        <c:choose>                                          
                                            <c:when test="${assetobj.id} == ${assetsproperties.id}">
                                                <option value="${assetobj.id}" selected>${assetobj.name}</option>                                          
                                            </c:when>
                                            <c:otherwise>
                                                <option value="${assetsproperties.id}">${assetsproperties.name}</option>                                
                                           </c:otherwise>
                                       </c:choose>                                 
                                    </c:forEach>
                                </c:when>
                                <c:otherwise>
                                    <option value="${assetsproperties.id}">${assetsproperties.name}</option>                                
                                </c:otherwise>
                            </c:choose>
                        </c:forEach>
                    </c:if>
            </select>               
        </form>
        </td>
    </tr>
    <tr>
        <td>Name :</td>
        <td><input type="text" name="assetname" value="<c:if test="${not empty asset}"><c:forEach items="${asset}" var="assetobj">${assetobj.name}</c:forEach></c:if>"></td>
    </tr>
    <tr>
        <td>Model Number :</td>
        <td><input type="text" name="assetmodelnumber" value="<c:if test="${not empty asset}"><c:forEach items="${asset}" var="assetobj">${assetobj.modelNumber}</c:forEach></c:if>"></td>
    </tr>
    <tr>
        <td>Rating (1 to 5 ):</td>
        <td><input type="text" name="assetrating" value="<c:if test="${not empty asset}"><c:forEach items="${asset}" var="assetobj">${assetobj.rating}</c:forEach></c:if>"></td>
    </tr>
    <tr>
        <td colspan="2" align="center"><input type="submit" name="Save" value="Update">
    </tr>
</table>
<script type="text/javascript">
  function submitForm(a){
      var e = document.getElementById("assetid");
      var assetid = e.options[e.selectedIndex].value;
      var assetnametxt = e.options[e.selectedIndex].text;         
      var assetnameElement = document.createElement("input");
      assetnameElement.type = "hidden";
      assetnameElement.name = "assetname";
      assetnameElement.value = assetnametxt;
      var form = document.getElementById('getAssetForm');
      form.appendChild(assetnameElement);
      form.setAttribute('action', "get-asset");
      form.submit();
  }
</script>

这是我的控制器代码:

@RequestMapping(value="/get-asset", method = RequestMethod.GET)
    public String showGetAssetPage(ModelMap model,
            @RequestParam("assetid") int assetid,
            @RequestParam("assetname") String assetname){
        System.out.println("inside showGetAssetPage() ");
        List<Asset> asset = service.getAsset(assetid, assetname);
        model.addAttribute("asset", asset);
        List<Asset> assets = service.getAssets();
        model.addAttribute("assets", assets);
        return "update-asset";
    }

我想在页面加载中显示选定的资产。如何使用JSTL匹配条件?

您的资产模型中应该有一个布尔字段isSelected。在您的控制器中,在所有资产对象中设置isSelected属性。仅使用此资产和检查isSelected属性,您可以设置为选择。

最新更新