【问题标题】:JSF <c:if> with different object type具有不同对象类型的 JSF <c:if>
【发布时间】:2009-06-08 17:01:34
【问题描述】:

我正在尝试比较 JSF 中的两个不同对象。 一个字符串和一个整数,当然它不起作用......

//myVar ==> 整数对象
//myVar2 ==> 字符串

<c:if test="${myVar == myVar2}">
    YES!!!!!!!!
</c:if>

我尝试使用 myVar.toString 但它是错误的。 那么该怎么做呢?

谢谢

【问题讨论】:

    标签: jsf types jstl compare if-statement


    【解决方案1】:

    我正在尝试比较 JSF 中的两个不同对象。一个字符串和一个整数,当然它不起作用......

    这听起来不对 - 我会检查值。对于 bean:

    public class CoercedBean {
    
      public int getValueAsInt() {
        return 123;
      }
    
      public String getValueAsString() {
        return "123";
      }
    
    }
    

    ...这些示例表达式的计算结果为 true:

    ${coercedBean.valueAsInt == coercedBean.valueAsString}
    <h:outputText style="color: blue"
        value="#{coercedBean.valueAsInt eq coercedBean.valueAsString}" />
    

    JSP 2.1 (EL) 规范提到了评估相等性:

    A {==,!=,eq,ne} B
    

    如果 A 或 B 是 Byte、Short、Character, Integer 或 Long 强制 A 和 B 对 Long,应用运算符

    【讨论】:

      【解决方案2】:

      尝试使用 JSTL fmt 标签:

      <fmt:parseNumber type="number" var="myVar2AsNumber" value=${myVar2} />
      
      
      <c:if test="${myVar == myVar2AsNumber}">
              YES!!!!!!!!
      </c:if>
      

      (或者,反过来,您可以使用 fmt:formatNumber 将 Integer 格式化为字符串并与其他字符串进行比较)。

      【讨论】:

        猜你喜欢
        • 2015-06-22
        • 1970-01-01
        • 2018-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多