JSF <c:if>具有不同的对象类型</c:if>

时间:2009-06-08 17:01:35

标签: jsf types jstl compare if-statement

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

// myVar ==&gt;整数对象
// myVar2 ==&gt;串

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

我尝试使用myVar.toString,但这是错误的。 那怎么办呢?

感谢的

2 个答案:

答案 0 :(得分:4)

  

我正在尝试比较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是字节,短,字符,   整数或长期强制A和B   to Long,应用运算符

答案 1 :(得分:2)

尝试使用JSTL fmt标记:

<fmt:parseNumber type="number" var="myVar2AsNumber" value=${myVar2} />


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

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