2012-11-14 13 views
8

Wie übersetzt sich die folgende Java-Bedingung in s:if test="..." in struts2?struts2: enum in IF

if(company.getAffiliateId().asInt() != com.foo.bar.Affiliates.XYZ.asInt()){ 
// do something 
} 

company.getAffiliateId() kehrt BigDecimal

com.foo.bar.Affiliates ist ein enum

Dies funktioniert nicht:

<s:if test="%{company.affiliateId.asInt() != com.foo.bar.Affiliates.XYZ.asInt() }"> 
    alert("do something"); 
</s:if> 

Antwort

8

Verwenden toString Methode zum Vergleichen enums.

<s:if test="ENUM.toString() == 'some_enum_as_string'"> 

Und wenn Sie enums in JSP

<s:if test="@[email protected]() == 'some_enum_as_string'"> 
4

Verstanden verwenden wollen, das funktioniert für mich:

<s:if test="%{company.affiliateId != @[email protected]() }"> 
+0

Ich denke, die Enum-Klasse basiert auf einer Datenbanktabelle generiert wurde. Es gibt keine statischen Methoden: private int id; private Partner (int id) {this.id = id; } public BigDecimal asBigDecimal() {return BigDecimal.valueOf (id); } public int asInt() {return id; } –

+0

Hmm .. du hast recht. Der falsche Teil meiner Antwort wurde entfernt. –