如何在JSTL IF条件中添加AND / OR运算符

时间:2014-08-05 06:46:00

标签: java jsp jstl

我对JSTL很新。

现在我已经创建了一个HashMap并在jsp页面中呈现它。

这就是我创建HashMap的方法

在应用程序级别:

public HashMap<String, String> uploadSmelter(){

HashMap<String, String> progress = new HashMap<String, String>();

try {
        CompanyEntity instanceNew = (CompanyEntity) sessionFactory.getCurrentSession()
                .createCriteria(CompanyEntity.class)
                .add(Restrictions.eq("name", smObj.getName()))
                .add(Restrictions.eq("metal",  MetalEnum.valueOf(metal))).uniqueResult();
        if (instanceNew != null){
            //logger.info();
            progress.put("error", Integer.toString(1));
            progress.put("errorMsg", "Company : " +smObj.getName() + " for Metal: " + metal + " exists." );

        }
     }
 return progress
}

在控制器级别:

HashMap<String, String> result = new HashMap<String, String>();
result.put("error", "0");        
result.put("update", "0");
result.put("create", "0");
HashMap<String, String> progress = new HashMap<String, String>();
int number = 0;
while (rowIterator.hasNext()) 
  {
    progress= companyFacade.uploadSmelter(); // implemented in application level uploadSmelter method

if(progress.get("errorMsg")!=null){   
 result.put(Integer.toString(number),progress.get("errorMsg"));
}
 number=number+1 ;
}

现在最后如果我在jsp页面中打印它,我就会

{3=Company: ABC COMPANY  for Metal: A Exists, update=0, 2=Company: ABC COMPANY TIN for Metal TIN Exists, 1=Company: ABC COMPANY G for Metal METAL_TANTALUM Exists, 0=Company: ABC COMPANY L for Metal METAL_TANTALUM Exists, error=4, fileName=data.1407219942830.xls, number=4, create=0}

现在我想在jsp页面中运行一个foreach循环,它应该从Hashmap中打印过滤后的值。

所以我在JSTL if语句中添加了这些条件。但似乎它不支持条件声明,我没有得到任何输出。

<c:forEach items="${result}" var="item">
  <c:if test="${item.key} !='update' && ${item.key} !='error' && ${item.key} !='create' && ${item.key} !='number' && ${item.key} !='fileName'}"  >                
     <div class="attributeField">Line Number <c:out value="${item.key}" /> &nbsp;<spring:message message="${item.value}"/></div> 
  </c:if>
</c:forEach>

那我在做什么错?感谢Advance的帮助。

1 个答案:

答案 0 :(得分:4)

只需使用围绕所有条件的单${...}作为test属性的值。

示例代码:

<c:forEach items="${result}" var="item">
    <c:if
        test="${item.key !='update' && item.key !='error' && item.key !='create' && item.key !='number' && item.key !='fileName'}">
        ...
    </c:if>
</c:forEach>

&&只能在${...}内执行。

Learn more...