Re: Invalid Field Value when using Map

2019-06-21 Thread Prasanth

Hi Yasser,

The conversion error occurs when the field is not a map. I have a form with 
int/long fields, if the user enters non numeric value the form display error.

The actions are validation aware and the control does come to validation method. It is in the validation method that I usually get exceptions  as the code is expecting to have a Double but the type of 
the object in the map is a String. I have tried to check in the validate method if the object is of type Double and if it is not a Double add a field error. When I do that OGNL seems to have an issue 
when displaying the input form with the values in the map. Seems like OGNL is now expecting a Double value and is not able to handle a String object being present in the map. The JSP stops at the 
field which has String value.


So even if I add additional validations to make sure all values in the map are 
Doubles it would still cause a problem as Struts would not be able to display 
the input form.

Thanks,
Prasanth

On 6/21/19 1:23 AM, Yasser Zamani wrote:

Oh interesting!

Have you seen [1]? e.g. conversion error interceptor should be present
in your interceptor stack. To debug, for example put a number field
which is not a map and see if conversion error appears - I think you
should also have fieldErrors tag in your jsp.

It seems your action also should be ValidationAware. Put a break-point
at [2] and see if your code reaches there and what happens next.

Regards.

[1]
https://struts.apache.org/core-developers/type-conversion.html#collection-and-map-support
[2]
https://github.com/apache/struts/blob/651eac2c57396aa11ee65002006b3123dd69cbb4/core/src/main/java/com/opensymphony/xwork2/interceptor/ConversionErrorInterceptor.java#L116

On 6/19/2019 10:35 PM, Prasanth Pasala wrote:

Hi Yasser,

I think at run time you can add any type of objects you want to the map.
The checks are only at compile time on the data types of objects added
to Maps.

Thanks,
Prasanth

On 6/19/19 1:29 AM, Yasser Zamani wrote:

Hi Prasanth,

I'm surprised how you get non digit characters in your map while both
key and value are not String!

Regards.


-Original Message-
From: Prasanth 
Sent: Monday, June 17, 2019 8:52 PM
To: Struts Users Mailing List 
Subject: Invalid Field Value when using Map

Hi,

I have a form that uses maps to store data as shown below. When the
user enters
valid numbers it works as expected, but when user enters non digit
characters in
the text field a String object is saved in the map rather than
showing a "Invalid
field value for field " message which is done for basic
data types like
int/long/double. Is this something that struts has not implemented
for maps yet,
as the annotations provide the expected data type?

  @Element(value=java.lang.Double.class)
  private HashMap deferralAmountValue = new
HashMap();
  @Element(value=java.lang.Double.class)
  private HashMap deferralPercentValue = new
HashMap();


Thanks,
Prasanth

-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org




-
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org





Re: Invalid Field Value when using Map

2019-06-21 Thread Yasser Zamani
Oh interesting!

Have you seen [1]? e.g. conversion error interceptor should be present
in your interceptor stack. To debug, for example put a number field
which is not a map and see if conversion error appears - I think you
should also have fieldErrors tag in your jsp.

It seems your action also should be ValidationAware. Put a break-point
at [2] and see if your code reaches there and what happens next.

Regards.

[1]
https://struts.apache.org/core-developers/type-conversion.html#collection-and-map-support
[2]
https://github.com/apache/struts/blob/651eac2c57396aa11ee65002006b3123dd69cbb4/core/src/main/java/com/opensymphony/xwork2/interceptor/ConversionErrorInterceptor.java#L116

On 6/19/2019 10:35 PM, Prasanth Pasala wrote:
> Hi Yasser,
> 
> I think at run time you can add any type of objects you want to the map.
> The checks are only at compile time on the data types of objects added
> to Maps.
> 
> Thanks,
> Prasanth
> 
> On 6/19/19 1:29 AM, Yasser Zamani wrote:
>> Hi Prasanth,
>>
>> I'm surprised how you get non digit characters in your map while both
>> key and value are not String!
>>
>> Regards.
>>
>>> -Original Message-
>>> From: Prasanth 
>>> Sent: Monday, June 17, 2019 8:52 PM
>>> To: Struts Users Mailing List 
>>> Subject: Invalid Field Value when using Map
>>>
>>> Hi,
>>>
>>> I have a form that uses maps to store data as shown below. When the
>>> user enters
>>> valid numbers it works as expected, but when user enters non digit
>>> characters in
>>> the text field a String object is saved in the map rather than
>>> showing a "Invalid
>>> field value for field " message which is done for basic
>>> data types like
>>> int/long/double. Is this something that struts has not implemented
>>> for maps yet,
>>> as the annotations provide the expected data type?
>>>
>>>  @Element(value=java.lang.Double.class)
>>>  private HashMap deferralAmountValue = new
>>> HashMap();
>>>  @Element(value=java.lang.Double.class)
>>>  private HashMap deferralPercentValue = new
>>> HashMap();
>>>
>>>
>>> Thanks,
>>> Prasanth
>> -
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org
>>
> 
>