[
https://issues.apache.org/jira/browse/OFBIZ-13168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17895921#comment-17895921
]
Nicolas Malin commented on OFBIZ-13168:
---------------------------------------
Hello,
Java doesn't support correctly Unicode whitespace [1], I propose to simplify
this fix with remove all char that isn't logical, like this :
{code:java}
diff --git
a/framework/base/src/main/java/org/apache/ofbiz/base/util/ObjectType.java
b/framework/base/src/main/java/org/apache/ofbiz/base/util/ObjectType.java
--- a/framework/base/src/main/java/org/apache/ofbiz/base/util/ObjectType.java
(revision f41e0a39bd8878a1f0b6166d5f1eae8ad15ae4ff)
+++ b/framework/base/src/main/java/org/apache/ofbiz/base/util/ObjectType.java
(date 1730887670616)
@@ -334,10 +334,7 @@
// numeric types : replace non-breaking spaces (which break
parsing) by normal spaces
List<?> numericClasses = UtilMisc.toList(BigDecimal.class,
Double.class, Float.class);
if (obj instanceof String && numericClasses.contains(targetClass))
{
- final String[] tmp = {String.valueOf(obj)};
- List<Character> nonBreakingWhitespaces =
UtilMisc.toList('\u00A0', '\u202F', '\u2007');
- nonBreakingWhitespaces.forEach(character -> tmp[0] =
tmp[0].replace(character, ' '));
- obj = tmp[0];
+ obj =
String.valueOf(obj).replaceAll("[^\\p{Alnum}\\p{Punct}]", " ");
}
{code}
[1] https://stackoverflow.com/questions/4731055/whitespace-matching-regex-java
> String to numeric conversion does not support non-breaking spaces
> -----------------------------------------------------------------
>
> Key: OFBIZ-13168
> URL: https://issues.apache.org/jira/browse/OFBIZ-13168
> Project: OFBiz
> Issue Type: Bug
> Components: ALL COMPONENTS
> Affects Versions: 18.12.16, Upcoming Branch
> Reporter: Florian Motteau
> Assignee: Jacques Le Roux
> Priority: Minor
> Fix For: Upcoming Branch
>
> Attachments: Peek 05-11-2024 10-59.mp4,
> image-2024-11-05-11-01-13-030.png
>
>
> When submitting a form with numeric values, OFBiz uses a text input (`<input
> type="text"/>`), so all characters (entered by hand or pasted) are allowed in
> the input.
> On form's submission, for numeric fields, the string is parsed using
> `java.text.NumberFormat` class (parse method), using a number instance
> formatter.
> This formatter does not supports non-breaking spaces ('\u00A0', '\u202F',
> '\u2007'), and characters after a non-breaking space are ignored :
> !image-2024-11-05-11-01-13-030.png|width=337,height=153!
> This can lead to a situation where a visually correct form stores wrong
> values :
> [^Peek 05-11-2024 10-59.mp4]
> One of our client reported this situation while pasting values from external
> tools. Some values where truncated, because the external tool used
> non-breaking spaces when displaying values.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)