【问题标题】: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 格式化为字符串并与其他字符串进行比较)。