Okay, I changed it back to settings[0] type syntax (I had tried it before and
it didn't work), so now I have this:
<s:iterator value="%{settings}" status="rowstatus">
<tr>
<th>
<input
name="settings[<s:property value="#rowstatus.index"
/>].title" value="<s:property value="title" />" type="hidden" />
<label
for="setting_<s:property value="id" />">
<s:property value="title" />:
</label>
</th>
<td>
<input
id="setting_<s:property value="id" />"
name="settings[<s:property value="#rowstatus.index" />].value"
value="<s:property value="value" />" />
</td>
</tr>
</s:iterator>
And now I am getting this in the logs (repeated for each attribute id,
title, value):
ERROR com.opensymphony.xwork2.util.InstantiatingNullHandler - Could not
create and/or set value back on to object
ognl.OgnlException: settings [java.lang.IllegalArgumentException: argument
type mismatch]
ERROR com.opensymphony.xwork2.interceptor.ParametersInterceptor -
ParametersInterceptor - [setParameters]: Unexpected Exception caught setting
'settings[0].title' on 'class com.rjssoft.webdocs.admin.SettingAction: Error
setting expression 'settings[0].title' with value
'[Ljava.lang.String;@185fe0c'
So again, it's failing trying to set a String[] to a String value on the
Setting object which has all of the getters/setters and are defined to
handle String values.
Any insight?
Ryan
dusty wrote:
>
> your syntax for the field name should be
> ...name = "settings[]" rather than name = "settings()"
>
> Also, I think your action expects to build a List of Settings rather than
> Map of settings. If that is the case then you don't want to use key
> values in settings[ASDF1-123AS-123SA-123] you want to use an index for a
> List, settings[0]... settings[1]..., etc. You don't need the Key_xxx in
> -conversion.properties file if your target is a List.
>
> I am wondering if you want struts to load your Settings models from the db
> based on the ID. If that was the case then you would need to use an
> entirely different pattern with a custom TypeConverter...
>
>
>
> ryangr wrote:
>>
>> This is probably going to be a really simple solution, but after
>> searching I still haven't quite found an answer so I appreciate any help
>> with this. I'm using 2.0.14 and trying to do type conversion on a custom
>> collection (called "settings" in this case, it is just an extended
>> ArrayList). I'm getting the following in my logs:
>>
>> Unexpected Exception caught setting
>> 'settings(D176A8AA-1636-4AFF-9C71-16A21DFCEDA7).id' on 'class
>> com.rjssoft.webdocs.admin.SettingAction: Error setting expression
>> 'settings(D176A8AA-1636-4AFF-9C71-16A21DFCEDA7).id' with value
>> '[Ljava.lang.String;@1f796d0'
>>
>> Unexpected Exception caught setting
>> 'settings(D176A8AA-1636-4AFF-9C71-16A21DFCEDA7).title' on 'class
>> com.rjssoft.webdocs.admin.SettingAction: Error setting expression
>> 'settings(D176A8AA-1636-4AFF-9C71-16A21DFCEDA7).title' with value
>> '[Ljava.lang.String;@1ce64f6'
>>
>> Unexpected Exception caught setting
>> 'settings(D176A8AA-1636-4AFF-9C71-16A21DFCEDA7).value' on 'class
>> com.rjssoft.webdocs.admin.SettingAction: Error setting expression
>> 'settings(D176A8AA-1636-4AFF-9C71-16A21DFCEDA7).value' with value
>> '[Ljava.lang.String;@6bba64'
>>
>> Now, obviously it is trying to set a String[] to a String value and
>> failing; however, according to the "official" doc on type conversion
>> there is no additional processing. The form consists of:
>>
>> ...
>> <s:iterator value="%{settings}">
>> <tr>
>> <th>
>> <input name="settings(<s:property value="id" />).id"
>> value="<s:property value="id" />" type="hidden" />
>>
>> <input name="settings(<s:property value="id" />).title"
>> value="<s:property value="title" />" type="hidden" />
>> <label for="setting_<s:property value="id" />">
>> <s:property value="title" />:
>> </label>
>> </th>
>> <td>
>> <input id="setting_<s:property value="id" />"
>> name="settings(<s:property value="id" />).value" value="<s:property
>> value="value" />" />
>> </td>
>> </tr>
>> </s:iterator>
>>
>> The values that come through are:
>> Setting params settings(D176A8AA-1636-4AFF-9C71-16A21DFCEDA7).id => [
>> D176A8AA-1636-4AFF-9C71-16A21DFCEDA7 ]
>> settings(D176A8AA-1636-4AFF-9C71-16A21DFCEDA7).value => [ 192.168.1.1 ]
>> settings(D176A8AA-1636-4AFF-9C71-16A21DFCEDA7).title => [ SMTP Server
>> Address ]
>>
>> My SettingAction-conversion.properties has(Setting is just a custom bean
>> object with all id, title, and value along with all getters/setters):
>> KeyProperty_settings=id
>> Element_settings=Setting
>>
>> I followed the examples so I'm not sure where it is going wrong...any
>> help?
>>
>> Thanks!
>> Ryan
>>
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/Type-conversion-exceptions-tp22497261p22538757.html
Sent from the Struts - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]