PrimeFaces Spinner mit deutschem Gebietsschema

9

In einem Java-Webprojekt verwenden wir PrimeFaces 4.0 als JSF-Erweiterung. Jetzt hatten wir ein Problem mit der Komponente Spinner (p: spinner) in PrimeFaces. Wir haben den Spinner in unser eigenes benutzerdefiniertes Tag eingebettet, um einige Standardwerte wie den StepFactor und das Gebietsschema festzulegen. Der Rumpf des JSF-Tags sieht folgendermaßen aus:

%Vor%

Dies funktioniert genauso wie beim Binden und Rendern der Komponente. Im folgenden Screenshot sehen Sie ein float 2.6f, das im Gebietsschema "de_DE" gesetzt und korrekt formatiert wurde (mit einem Komma anstelle eines Punktes als Dezimaltrennzeichen).

Wenn der Benutzer jedoch die Spinntasten verwendet, um den Wert zu ändern, wird die Formatierung sofort falsch. Der Wert wird von der Komponente sogar falsch geparst. Im nächsten Screenshot können Sie den gleichen Spinner sehen, nachdem wir einmal auf den "up" -Button geklickt haben. Was eigentlich dazu führen sollte, dass in der Komponente ein Wert von "2,70" angezeigt wird.

Screenshot nach einmaligem Drücken der "up" Taste.

Hat jemand sonst schon ähnliche Probleme?

Gibt es eine Standardkorrektur für das JavaScript, das die p: spinner-Komponente behandelt, die wir hier anwenden können, oder müssen wir wirklich in die PrimeFaces JS-Bibliothek eindringen und diese selbst beheben?

    
Matthias Steinbauer 07.11.2014, 06:10
quelle

2 Antworten

4

f:convertNumber ist eine serverseitige Konvertierung. Das Inkrementieren und Dekrementieren des Wertes ist JavaScript, der f:convertNumber wird nicht berücksichtigt, bis der Wert zum Server zurückkehrt, daher sollte eine hässliche JavaScript-Lösung ausgeführt werden.

Ich habe einen Patch für dieses Problem erstellt und ich habe Number.prototype.toLocaleString() um die Nummer in eine lokalisierte Version zu konvertieren.

Alles, was Sie tun müssen, ist pf.spinner.local.fix.js und stellen Sie Ihr bevorzugtes Gebietsschema auf die folgende Weise ein (in document.ready ):

%Vor%

Es gibt ein paar Anmerkungen:

  • Number.prototype.toLocaleString ()

  • Dieser Patch wurde auf PrimeFaces 5.0 und 4.0
  • getestet und bestätigt

Hier ist ein kleines Beispiel auf github und < a href="http://jsf.hatemalimam.com/DailyLab/spinner/main.xhtml"> Demo

    
Hatem Alimam 07.11.2014, 10:21
quelle
0

Scheint so, als ob Primefaces Spinner I18N nicht unterstützt.

Eine Forumsnachricht, in der Sie aufgefordert werden, Gebietsschemata zu unterstützen, wurde seit 2010 ohne Antwort veröffentlicht: Ссылка

Eine mögliche Lösung wäre, die Extension-Komponente timePicker von Primefaces zu verwenden und sie anzupassen, um Ihren Wert zu verwalten. Siehe: Ссылка Und: Ссылка

Oder Sie könnten versuchen, sich mit JS anzulegen ...

    
Thrax 07.11.2014 09:06
quelle

Tags und Links