Unless you use the json inteceptor to map the request boy to the action,
you need to send the contact firstName as "contact.firstName", so Struts
will invoke
setContact(new Contcat());
getContact().setFirstName("John");
-- JSON TEST SUBMISSION --
$.ajax({
... other ajax settings ...
// manually insert data for testing
data : {"testValue":"yes","contact.firstName":"John","contactId":100},
});
2014-10-28 18:19 GMT-04:00 Burton Rhodes <[email protected]>:
> I am having issues setting nested parameters on an object using the
> json-plugin. I've created a basic example that I'm currently testing.
> When debugging at the "return SUCCESS" line, both the testValue and
> contactId variables are set correctly. The contact variable, however, is
> null. The relevant console lines line is "WARN : Parameter
> [contact[firstName]] didn't match acceptedPattern pattern!" - but I'm not
> sure how to fix that as it *should* match the setContact() setter in my
> Action. Any thoughts on what is going on here? Thanks in advance....
>
> -- ACTION --
> public class ContactJsonAction {
>
> private Integer contactId;
> private Contact contact;
> private String testValue;
>
> public String contactUpdate() throws Exception {
> return SUCCESS;
> }
>
> // Getters & Setters below....
> }
>
> -- JSON TEST SUBMISSION --
> $.ajax({
> ... other ajax settings ...
> // manually insert data for testing
> data : {"testValue":"yes","contact":{"firstName":"John"
> },"contactId":100},
> });
>
> -- LOGS --
> DEBUG: Creating an DefaultActionProxy for namespace [/app/json] and action
> name [ContactDetail_update]
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: cannot find method [prepareContactUpdate] in action
> [com.afs.web.action.json.ContactJsonAction@b7a6ee]
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: cannot find method [prepareDoContactUpdate] in action
> [com.afs.web.action.json.ContactJsonAction@b7a6ee]
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: Setting params NONE
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: Setting params testValue => [ yes ] contact[firstName] => [ Bean ]
> contactId => [ 100 ]
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: Parameter [contactId] was accepted and will be appended to action!
> Oct 28, 17:15:34 (CommonsLogger.java:56)
> WARN : Parameter [contact[firstName]] didn't match acceptedPattern pattern!
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: Parameter [testValue] was accepted and will be appended to action!
> Oct 28, 17:15:34 (CommonsLogger.java:76)
> DEBUG: Retrieving convert for class [class
> com.afs.web.action.json.ContactJsonAction] and property [contactId]
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: field-level type converter for property [contactId] = none found
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: global-level type converter for property [contactId] =
> com.afs.web.converter.MyNumberConverter@1611a05
> Oct 28, 17:15:34 (CommonsLogger.java:76)
> DEBUG: Retrieving convert for class [class
> com.afs.web.action.json.ContactJsonAction] and property [testValue]
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: field-level type converter for property [testValue] = none found
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: global-level type converter for property [testValue] = none found
> Oct 28, 17:15:34 (CommonsLogger.java:72)
> DEBUG: falling back to default type converter
> [com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter@a5eac1]
> Oct 28, 17:15:34 (CommonsLogger.java:72)
>