2015-04-27 33 views
6

İlk dizenin ikinci dizeden 'küçük' olup olmadığına karar vermek için iki dizeyi karşılaştırmak istiyorum.freemarker - dizgi karşılaştırması - operatör izin verilmiyor

<#if name1 <= name2> 
.... 
</#if> 

Hata:

Can't use operator "<=" on string values. 

bu FreeMarker yapılabilir mi? Şablonda String.compareTo yöntemini çağırmak mümkün mü?

+0

, kullanmak gerekir 'String.compareTo()'. [Bu] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo (java.lang.String)) yardımcı olabilir. – mtyurt

+0

Her ikisi de gerçekten Dize nesneleridir. FreeMarker'da 'compareTo' yöntemini nasıl arayabilirim? –

+1

da "küçük" olarak düşündüğünüze göre değişir. Dizeler sayısal değerler değildir. – Stultuske

cevap

0

FreeMarker size Strings karşılaştırmak için == kullanabilirsiniz, ancak sizin için <= anlamını bağlı, ihtiyacınız lenght, content, ya da ne karşılaştırmak için BuiltIn for strings kullanabilirsiniz.

GÜNCELLEME: Eğer compare lexicographicallyStringFreeMarker te yöntemde yerleşik yok, bu yüzden 2 seçeneğiniz vardır: dizeleri üzerinde yineleme,

  1. Stringsbuilt-in ile işlevlerini Karşılaştırmak için kendi yöntem oluşturun ve char ile karşılaştırma char.
  2. @meskobalazs boyunu demekse
+1

Hangi işlevi? –

+0

'<=' ile ne demek istiyorsun? –

+0

'String.compareTo()' tanımı, benim durumum için sorun değil. –

2

kullanabileceğiniz önerdiği gibi bir Java karşılaştırıcı oluşturmak length yerleşik, örneğin:

<#if string?length gt 0> 

Özel bir karşılaştırma kullanmak için ortalama ve varsa Struts2 kullanıyorsunuz, bunun için sadece bir eylem metodu çağırabilirsiniz, bir karşılaştırma yöntemi olduğunu varsayalım:

public boolean compare(String str1, String str2) { ... } 

o zaman bunu yapabilirsiniz: onlar String nesneleri iseniz

<#if action.compare(str1, str2) gt 0> 
+0

FreeMarker motoru, 'compare' işlevini nasıl bulur? Nerede uygulanmalı? Statik olmak zorunda mı? –

+0

Eh, burada Struts2'yi kullandığınızı varsaydım. Bu durumda değilse, olmaz. Eğer yaparsanız, bir Struts2 Eyleminin bir kamu örneği yöntemi olmalıdır. – meskobalazs

+0

Hayır Struts2 kullanmıyorum. –

İlgili konular