Hi,
I have experienced an error using IE (5.5 and 6) with seam remoting.
I believe I have a fix for the error, but was just wanting to check if anyone
else has experienced it and whether my understanding is correct.
The error message is 'field is null or not an object' and occurs in 'data +=
meta.field;' from seam/remoting/resource/remote.js :
| var meta = isComponent ? Seam.Component.getMetadata(obj) :
Seam.Remoting.getMetadata(obj);
| for (var i = 0; i < meta.length; i++)
| {
| data += "<member name=\"";
| data += meta.field;
| data += "\">";
| data += Seam.Remoting.serializeValue(obj[meta.field], meta.type, refs);
| data += "</member>\n";
| }
|
Here is the generated interface the error occurred on:
| Seam.Remoting.type.status.__name = "status";
| Seam.Remoting.type.status.__metadata = [
| {field: "code", type: "str"},
| {field: "disabled", type: "bool"},
| {field: "description", type: "str"},
| {field: "id", type: "number"},
| {field: "version", type: "number"},
| ];
|
The generated interface code has a comma after the last field array value which
makes IE treat the whole array as having length 6 (with an undefined element at
the end) whereas firefox ignores the comma and treats the array as having a
length of 5. IE iterates through all 5 valid fields, but then can't process
the undefined 6th array element and fails.
IE seems in this case to have the more correct javascript interpretation.
To fix the issue, I made the following minor change to the
org.jboss.seam.remoting.InterfaceGenerator class, rebuilt it and now it works
fine on IE and Firefox.
| int i = 0;
| for (String key : metadata.keySet())
| {
| typeSource.append(" {field: \"");
| typeSource.append(key);
| typeSource.append("\", type: \"");
| typeSource.append(metadata.get(key));
| typeSource.append("\"}");
|
| // can't put ',' after last element of the generated array or
javascript will interpret as undefined element
| if(i != metadata.keySet().size() -1){
| typeSource.append(",");
| }
| typeSource.append("\n");
|
| i++;
| }
|
Happy to create a JIRA issue, but just wanted to check I was on the right track,
Regards
Samual
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3966206#3966206
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3966206
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user