2009-06-08 12 views
3

Ich versuche, zwei verschiedene Objekte in JSF zu vergleichen. A String und ein Integer, der cours es nicht funktionieren ...JSF <c:if> mit unterschiedlichen Objekttyp

// myVar ==> Integer Objekt
// MyVar2 ==> String

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

Ich versuche, mit myVar.toString aber es ist falsch. So wie es geht?

Dankten

Antwort

4

Ich versuche, zwei verschiedene Objekte in JSF zu vergleichen. Ein String und ein Integer, natürlich funktioniert es nicht ...

Das klingt nicht richtig - ich würde die Werte überprüfen. Für die Bohne:

public class CoercedBean { 

    public int getValueAsInt() { 
    return 123; 
    } 

    public String getValueAsString() { 
    return "123"; 
    } 

} 

... dieses Beispiel Ausdrücke auswerten zu wahr:

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

Die JSP 2.1 (EL) Spezifikation sagt die Bewertung Gleichheit:

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

Wenn A oder B Byte, Kurz, Zeichen, Integer ist, oder Long sowohl A als auch Berzwingenzu Long, wenden Sie den Bediener an

2

Versuchen Sie, die JSTL fmt-Tags:

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


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

(oder, in umgekehrter Richtung, könnten Sie fmt: format die Integer als String formatiert werden und zum anderen String vergleichen).