Hi Chris
you are right, this works:
@Override
public boolean isValid(String text) {
return (text.length() == 0) || super.isValid(text);
}
I was referencing a wrong validator in my bxml file :(
but now when my input is empty, it can't be converted into a number when
store() is invoked:
java.lang.NumberFormatException: For input string: ""
at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:431)
at java.lang.Long.parseLong(Long.java:468)
at org.apache.pivot.beans.BeanAdapter.coerce(BeanAdapter.java:897)
at org.apache.pivot.beans.BeanAdapter.put(BeanAdapter.java:286)
at org.apache.pivot.json.JSON.put(JSON.java:152)
at org.apache.pivot.wtk.TextInput.store(TextInput.java:841)
at org.apache.pivot.wtk.Container.store(Container.java:613)
at
org.apache.pivot.wtk.content.TableViewRowEditor.endEdit(TableViewRowEditor.java:254)
I solved this issue with a custom BindMapping, but now this gets a little bit
complex ...
Regards
Anton
On 06/03/2011 20:26, Chris Bartlett wrote:
On 6 March 2011 16:11, anton dos santos <[email protected]
<mailto:[email protected]>> wrote:
I also tried StrictValidation="true" and an intValidator that accepts empty
input by
overriding isValid():
public boolean isValid(String text) {
final ParsePosition pos = new ParsePosition(0);
Object obj = format.parseObject(text, pos);
if( obj == null || text.length() == 0) {
return true;
}
// the text is only valid is we successfully parsed ALL of it. Don't
want trailing bits of
// not-valid text.
return obj != null && pos.getErrorIndex() == -1 && pos.getIndex() ==
text.length();
}
this works fine until user erases everything in the TextInput, from then on
use can enter any
character, he is no longer limited to digits.
What else could I try ?
This seems to work for me.
public class XXXIntRangeValidator extends IntRangeValidator {
// Constructors...
@Override
public boolean isValid(String text) {
return (text.length() == 0) || super.isValid(text);
}
}