Datentyp Number
Wertebereich des Datentyps Number
Der Datentyp Number repräsentiert Zahlen. Darunter fallen sowohl Ganz- als auch Gleitkommazahlen, z. B. java.math.BigInteger, java.lang.Long usw. Mithilfe von Zahlen ist es in FirstSpirit 4.0 möglich, eine Vielzahl von arithmetischen Ausdrücken zu formulieren, z. B.
- Addition
- Subtraktion
- Multiplikation
- Division
- Division mit Rest (Modulo)
Weiterführende Informationen zu diesem Thema siehe arithmetische Ausdrücke.
Weiterführende Informationen zum Datentyp Number siehe Sun API-Dokumentation: java.lang.Number
Definition über die Standard-Eingabekomponenten
Im Formularbereich einer Seiten- oder Absatzvorlage können unterschiedliche Eingabekomponenten definiert werden. Über diese Formularelemente können dann die eigentlichen redaktionellen Inhalte in die Seite einfügen werden. Die von FirstSpirit unterstützten Standard-Eingabekomponenten liefern unterschiedliche Datentypen zurück.
Die folgenden Standard-Eingabekomponenten liefern ein Objekt vom Datentyp Number zurück:
Auf diesem Objekt lassen sich dann mithilfe einer $CMS_VALUE(...)$-Anweisung Methoden anwenden:
$CMS_VALUE(BEZEICHNER.METHODE)$
Unter BEZEICHNER muss der Parameter resultname, der in der Eingabekomponente definiert wurde, angegeben werden.
Methoden auf Number-Objekten
In der unten angegebenen Tabellen werden alle Methoden aufgelistet, die auf Objekten vom Datentyp Number aufgerufen werden können:
Objekt wird von folgenden Formular-Objekten erzeugt: |
---|
CMS_INPUT_NUMBER |
byteValue
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
byteValue | byte |
compareTo(Number)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
compareTo(Number) | int |
compareTo(Comparable)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
compareTo(Comparable) | int |
div(BigInteger)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
div(BigInteger) | BigDecimal |
div(BigDecimal)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
div(BigDecimal) | BigDecimal |
div(Number)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
div(Number) | BigDecimal |
doubleValue
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
doubleValue | double |
equals(BigDecimal)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
equals(BigDecimal) | boolean |
equals(Number)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
equals(Number) | boolean |
equals(Object)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
equals(Object) | boolean |
floatValue
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
floatValue | float |
format(String)
Mithilfe der Methode format(String) können Zahlen formatiert ausgegeben werden.
Dazu werden Formatierungsanweisungen (pattern) verwendet, die auch für die Anzeige von Zahlen in der Eingabekomponente CMS_INPUT_NUMBER verwendet werden (Parameter format).
Zusätzlich zu den Möglichkeiten, Zahlen in der Eingabekomponente CMS_INPUT_NUMBER zu formatieren, können Zahlen über die Methode format(String) darüber hinaus auf folgende Weise ausgegeben werden:
1) Ausgabe von sprachspezifischen Währungseinheiten
Dazu wird das Symbol ¤ (Unicode: #00a4) verwendet.
Beispiel:
$CMS_VALUE(22.format("0 ¤").convert2)$
Da das Symbol ¤ nicht in allen Zeichensätzen vorhanden ist und es eventuell im Browser nicht richtig dargestellt wird, wird die Methode .convert2() (siehe dazu Datentyp String) verwendet. Die Ausgabe ist (abhängig von der gewählten Projektsprache) z.B. 22 € für Deutsch oder 22 £ für Englisch.
Für internationale Währungszeichen (z.B. EUR für Deutsch oder GBP für Englisch) wird das Symbol ¤ doppelt verwendet, also ¤¤ (Unicode: #00a4#00a4).
2) Ausgabe von Prozent- und Promillezeichen
Dazu werden die Symbole % bzw. ‰ verwendet. Die jeweilige Zahl wird bei Verwendung von % zunächst mit 100 multipliziert, bei Verwendung von ‰ mit 1000.
$CMS_VALUE(0.22.format("0 %"))$
bzw.
$CMS_VALUE(0.002.format("0 ‰").convert2)$
Die Ausgabe lautet entsprechend 22 % bzw. 2 ‰.
3) Ausgabe von individuellem Text
Individueller Text kann maskiert durch einfache Hochkommata ' ausgegeben werden:
$CMS_VALUE(123.format("0 'Yen'"))$
Ausgabe: 123 Yen
Soll ein einfaches Hochkomma ausgegeben werden, muss '' (zwei Hochkommata) angegeben werden.
4) Unterschiedlich formatierte Ausgaben für positive und negative Zahlen
Mithilfe von Semikolons ; können positive und negative Zahlen mit unterschiedlicher Formatierung angegeben werden. Der Teil vor dem Semikolon gibt dabei die Formatierungsregeln für positive, der nach dem Semikolon für negative Zahlen an. Das Pattern muss für die Zahl muss dabei für positive und negative Zahlen gleich sein. Die Formatierungsanweisung darf sich lediglich in Symbolen unterscheiden, die vor oder nach der durch eine oder mehrere Nullen (0) oder ein oder mehrere #-Symbole dargestellten Zahl, ansonsten wird für die Formatierungsanweisung vor dem Semikolon für positive und negative Zahlen verwendet.
Beispiel:
$CMS_SET(result, 2 - 4)$
1. Fall: $CMS_VALUE(result.format("#,##0.00;(#,##0.00)"))$ <br>
2. Fall: $CMS_VALUE(result.format("0.00;-0.00 ¤").convert2)$
In diesem Beispiel hat die Variable result den Wert "-2", die Ausgabe lautet daher im ersten Fall (2.00), im zweiten Fall -2,00 €. Hätte die Variable einen positiven Wert, z.B. "2", wäre die Ausgabe in beiden Fällen 2,00.
Weitere Informationen siehe java.text.DecimalFormat. |
Verwendung von ChoiceFormat
Über ChoiceFormat kann einer Menge von Zahlen ein bestimmtes Format zugewiesen werden. Auf diese Weise können z.B. Singular- und Pluralformen von Substantiven flexibel anhand der Anzahl ausgegeben werden.
Dazu kann z. B. mit $CMS_SET(...)$ eine Liste mit Key-Value-Paaren definiert werden, wobei der Key jeweils eine Zahl enthält, der Value den gewünschten Text. Key und Value werden mit "#" getrennt, die Key-Value-Paare werden mit "|" voneinander getrennt, z.B.
$CMS_SET(myVariable, "1.0#Sun|2.0#Mon|3.0#Tue|4.0#Wed|5.0#Thur|6.0#Fri|7.0#Sat")$
Diese Liste kann über $CMS_FOR(...)$ und $CMS_VALUE(...)$ ausgegeben werden, und zwar unter Verwendung von "choice=", z.B.:
$CMS_FOR(i, [1..7])$
$CMS_VALUE(i + " -> " + i.format("choice=" + myVariable))$ <br>
$CMS_END_FOR$
Die Ausgabe sieht folgendermaßen aus:
1 -> Sun
2 -> Mon
3 -> Tue
4 -> Wed
5 -> Thur
6 -> Fri
7 -> Sat
Auch sprachabhängige Ausgaben können auf diese Art realisiert werden, z.B.:
Sprache DE: $CMS_VALUE(12.format("choice=1#Jan|2#Feb|3#Mrz|4#Apr|5#Mai|6#Jun|7#Jul|8#Aug|9#Sep|10#Okt|11#Nov|12#Dez"))$ <br>
Sprache EN: $CMS_VALUE(12.format("choice=1#Jan|2#Feb|3#Mar|4#Apr|5#May|6#Jun|7#Jul|8#Aug|9#Sep|10#Oct|11#Nov|12#Dec"))$
Ausgabe:
Sprache DE: Dez
Sprache EN: Dec
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
format(String) | String |
getClass
Die Methode .getClass() (in Bean-Syntax: .class) liefert die Klasse des aufrufendes Objektes zurück (vgl. java.lang.Class).
Aufruf:
$CMS_VALUE(myString.class)$
$CMS_VALUE(myString.getClass())$
Ausgabe:
java.lang.String
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
getClass | Class |
humanReadable(String)
Über die Methode humanReadable(String) können Dateigrößen, z. B. von Medien, als Ganzzahl in einer bestimmten Einheit ausgegeben werden, um die Angabe besser lesbar zu machen. Die Verwendung ist nur in Verbindung mit der ref(...)-Funktion und der Methode .size sinnvoll.
Im Vergleich zur Methode humanReadable(String, String) (siehe unten) kann über humanReadable(String) nur die Einheit angegeben werden (also vergleichbar mit dem 1. String in der Methode humanReadable(String, String). Das Format (2. String der Methode humanReadable(String, String)) ist standardmäßig "0 {U}", wobei 0 der Platzhalter für die ganzzahlige Dateigröße und {U} der Platzhalter für die Einheit ist (Beispiel siehe unten).
Für die Definition der Einheit über humanReadable(String) kann zwischen Binär- (auf der Basis von Zweierpotenzen) und Dezimalbezeichnung (auf der Basis von Zehnerpotenzen) gewählt werden (vgl. dazu auch IEC-Norm 60027-2):
- Binärbezeichnungen:
- 1 Kibibyte (KiB) entspricht 210 Byte = 1024 Byte
- 1 Mebibyte (KiB) entspricht 220 Byte = 1.048.576 Byte
- 1 Gibibyte (GiB) entspricht 230 Byte = 1.073.741.824 Byte
- ...
- Dezimalbezeichnungen (SI-Präfixe):
- 1 Kilobyte (kB) entspricht 103 Byte = 1.000 Byte
- 1 Megabyte (MB) entspricht 106 Byte = 1.000.000 Byte
- 1 Gigabyte (GB) entspricht 109 Byte = 1.000.000.000 Byte
- ...
Für die Ausgabe der Dateigröße in Binärbezeichnung stehen folgende Werte für die verschiedenen Einheiten zur Verfügung:
KiB, MiB, GiB, TiB, PiB, EiB, ZiB und YiB
Darüber hinaus kann der Platzhalter ** verwendet werden, um die Dateigröße in der größtmöglichen Einheit auszugeben.
Für die Ausgabe der Dateigröße in Dezimalbezeichnung stehen folgende Werte für die verschiedenen Einheiten zur Verfügung:
kB, MB, GB, TB, PB, EB, ZB und YB
Darüber hinaus kann der Platzhalter * verwendet werden, um die Dateigröße in der größtmöglichen Einheit auszugeben.
Beispiel:
$CMS_VALUE(ref(media:"REFERENZNAME").size.humanReadable("*"))$
In diesem Beispiel wird die Dateigröße des Mediums mit dem Referenznamen REFERENZNAME in der größtmöglichen Einheit in Dezimalbezeichnung ausgegeben.
Ergänzt um das Standardformat lautet das Äquivalent als humanReadable(String, String) (siehe unten):
$CMS_VALUE(ref(media:"REFERENZNAME").size.humanReadable("*", "0 {U}"))$
Da über diese Methode nur Ganzzahlen ausgegeben werden können, werden Dezimalzahlen auf- oder abgerundet.
Die Größe einer Datei von 2572,31 kB wird z.B. bei Angabe folgender Einheiten wie folgt ausgegeben:
- bei Angabe von kb: "2572 kB"
- bei Angabe von MB: "3 MB"
- bei Angabe von GB: "0 GB"
- bei Angabe von *: "3 MB"
Sollen Dateigrößen nicht gerundet ausgegeben werden, kann die Methode humanReadable(String, String) verwendet werden (siehe unten). |
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
humanReadable(String) | String |
humanReadable(String, String)
Über die Methode humanReadable(String, String) können Dateigrößen, z.B. von Medien, formatiert ausgegeben werden, um die Angabe besser lesbar zu machen. Die Verwendung ist nur in Verbindung mit der ref(...)-Funktion und der Methode .size sinnvoll.
Neben einer gewünschten Einheit wird bei dieser Methode auch ein Format für die Dateigröße definiert, wobei zuerst die Einheit und dann das Format angegeben werden muss, durch ein Komma getrennt.
1. String – Einheit: Bei der Einheit kann zwischen der Ausgabe in Binär- (auf der Basis von Zweierpotenzen) oder Dezimalbezeichnung (auf der Basis von Zehnerpotenzen) gewählt werden. Es können dieselben Einheiten verwendet werden, wie für die Methode humanReadable(String) (siehe oben), inklusive der Platzhalter * und **. Anders als bei humanReadable(String) wird die Einheit nicht mit ausgegeben. Sie muss im zweiten String definiert werden:
2. String – Format: Für das Format können die für Zahlen bekannten Formatierungsanweisungen verwendet werden (s. Parameter format bei CMS_INPUT_NUMBER). Werden dabei weniger Nachkommastellen definiert, als die Dateigröße hat, wird auf die angegebene Nachkommastellenzahl auf- bzw. abgerundet.
Standardmäßig wird nur die Dateigröße ausgegeben. Die gewünschte Einheit muss zusätzlich zum Format angegeben werden. Theoretisch kann jeder Text verwendet werden und dabei je nach Anwendungsfall auch Einheiten in Binär- und Dezimalbezeichnung kombiniert werden.
Um die Einheit flexibel auszugeben, kann der Platzhalter {U} verwendet werden. Dieser wird durch die im ersten String angegebene Einheit ersetzt. Wird im ersten String * oder ** verwendet, sollte im zweiten String {U} gesetzt werden, um sicher zu gehen, dass automatisch die korrekte Einheit ausgegeben wird.
Beispiele:
1) Mit folgender Syntax wird die Größe des Mediums mit dem Referenznamen REFERENZNAME auf zwei Stellen nach dem Komma gerundet in MB ausgegeben:
$CMS_VALUE(ref(media:"REFERENZNAME").size.humanReadable("MB","0.00 MB"))$
oder
$CMS_VALUE(ref(media:"REFERENZNAME").size.humanReadable("MB","0.00 {U}"))$
2) Mit folgender Syntax wird die Größe des Mediums mit dem Referenznamen REFERENZNAME auf zwei Stellen nach dem Komma gerundet in der größtmöglichen Einheit ausgegeben:
$CMS_VALUE(ref(media:"REFERENZNAME").size.humanReadable("*",".00 {U}"))$
3) Mit folgender Syntax wird die Größe des Mediums mit dem Referenznamen REFERENZNAME in KiB aber mit der Einheit "kB" ausgegeben:
$CMS_VALUE(ref(media:"REFERENZNAME").size.humanReadable("KiB","0.0 kB"))$
Die Größe einer Datei von 2572,31 kB wird z.B. bei Angabe folgender String-Kombinationen wie folgt ausgegeben:
- bei Angabe von ("kB","0 kB"): "2572 kB"
- bei Angabe von ("kB",",000 kB"): "2.572 kB"
- bei Angabe von ("*",".0000 {U}): "2,5723 MB"
- bei Angabe von ("MB","0.0 MB"): "2,6 MB"
- bei Angabe von ("MB","0.00 MB"): "2,57 MB"
- bei Angabe von ("GB","0.0 GB"): "0,00 GB"
- bei Angabe von ("GB","0.00 GB"): "0,003 GB"
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
humanReadable(String, String) | String |
intValue
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
intValue | int |
isCase(BigDecimal)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
isCase(BigDecimal) | boolean |
isCase(Number)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
isCase(Number) | boolean |
isCase(Object)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
isCase(Object) | boolean |
isNull
Die Methode .isNull() (in Bean-Syntax: .isNull) prüft, ob ein Ausdruck bzw. Objekt Null ist, z.B. storeElement.isNull(). Bei Objekten mit komplexen Werten oder Objekten entscheidet das Objekt wann es null ist. Der Datentyp DomElement enthält beispielsweise immer ein leeres Dokument, ist also nie null. Die Prüfung einer leeren DOM-Editor-Eingabekomponente mit der Methode .isNull() liefert daher den Wert false, während die Prüfung der Komponente auf .isEmpty() den Wert true liefern würde.
Die Methode .isNull() gibt einen booleschen Wert als Ergebnis der Prüfung zurück. true (=wahr) ist die Prüfung, wenn der Ausdruck bzw. das Objekt Null ist und false (=unwahr) wenn nicht.
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
isNull | boolean |
longValue
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
longValue | long |
minus(BigInteger)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
minus(BigInteger) | BigDecimal |
minus(BigDecimal)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
minus(BigDecimal) | BigDecimal |
minus(Double)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
minus(Double) | BigDecimal |
minus(Number)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
minus(Number) | BigDecimal |
modulo(BigInteger)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
modulo(BigInteger) | BigInteger |
modulo(Short)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
modulo(Short) | long |
modulo(Long)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
modulo(Long) | long |
modulo(Integer)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
modulo(Integer) | long |
modulo(Byte)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
modulo(Byte) | long |
mult(BigInteger)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
mult(BigInteger) | BigDecimal |
mult(BigDecimal)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
mult(BigDecimal) | BigDecimal |
mult(Number)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
mult(Number) | BigDecimal |
plus(BigInteger)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
plus(BigInteger) | BigDecimal |
plus(BigDecimal)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
plus(BigDecimal) | BigDecimal |
plus(Number)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
plus(Number) | BigDecimal |
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
void |
set(String, Object)
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
set(String, Object) | Object |
shortValue
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
shortValue | short |
toJson
Convert to JSON string representtion (only handles Maps, Collections, Arrays, Numbers, and Strings)Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
toJson | String | 4.2.14 |
toNumber
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
toNumber | Number |
toString
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
toString | String |
type
Methodenname | Rückgabetyp | Verfügbar seit |
---|---|---|
type | String |