2012-11-14 8 views
8

W jaki sposób następujący warunek Javy przekłada się na s:if test="..." w struts2?struts2: enum in IF

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

company.getAffiliateId() powraca BigDecimal

com.foo.bar.Affiliates jest enum

To nie działa:

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

Odpowiedz

8

Użyj toString metoda porównywania enums.

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

A jeśli chcesz używać enums w JSP

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

Got to działa to dla mnie:

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

myślę klasa enum został wygenerowany na podstawie tabeli bazy danych. Nie ma w nim statycznych metod: private int id; Prywatne podmioty stowarzyszone (int id) {this.id = id; } public BigDecimal asBigDecimal() {return BigDecimal.valueOf (id); } public int asInt() {return id; } –

+0

Hmm ... masz rację. Usunięto niewłaściwą część mojej odpowiedzi. –