From: Sven Schöling Date: Mon, 1 Jun 2015 14:07:32 +0000 (+0200) Subject: ClientJS: Values nicht trimmen X-Git-Tag: release-3.3.0beta~61 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=6146d71465314a4196eaa0852116aae3729f9c43;p=kivitendo-erp.git ClientJS: Values nicht trimmen Wenn numerische Werte (also IVs und NVs) per Regex getrimmt werden, wird dabei das POK Flag gesetzt, das anzeigt, dass der Scalar auch ein valider String ist. JSON kann dann nicht mehr unterscheiden welcher Typ der Scalar ist, und nimmt String. Das führt aber dazu, dass _alle_ Zahlen als Strings encodiert werden. Auch das wäre prinzipiell kein Problem, ausser dass Javascript keine separaten Operatoren für Strings und Zahlen hat. json.val1 + json.val2 wird also immer als concat aufgefasst und nicht als Addition, und json.val ? true : false ist immer true, weil "0" und "1" beide true in Javascript sind. --- diff --git a/SL/ClientJS.pm b/SL/ClientJS.pm index d4775b830..c12b9ea24 100644 --- a/SL/ClientJS.pm +++ b/SL/ClientJS.pm @@ -152,7 +152,6 @@ sub action { foreach my $idx (0..$num_args - 1) { # Force flattening from SL::Presenter::EscapedText and trim leading whitespace for scalars $args[$idx] = "" . $args[$idx] if ref($args[$idx]) eq 'SL::Presenter::EscapedText'; - $args[$idx] =~ s/^\s+// if !ref($args[$idx]); } push @{ $self->_actions }, [ $method, @args ];