@doc_180 avait le bon concept, sauf qu'il se concentre sur les chiffres, alors que l'affiche originale avait des problèmes avec les chaînes de caractères.
La solution consiste à modifier le mx.rpc.xml.XMLEncoder
fichier. Il s'agit de la ligne 121 :
if (content != null)
result += content;
(J'ai consulté le kit SDK Flex 4.5.1 ; les numéros de ligne peuvent différer dans d'autres versions).
En fait, la validation échoue parce que le "contenu est nul" et que votre argument n'est pas ajouté au paquet SOAP sortant, ce qui provoque l'erreur de paramètre manquant.
Vous devez étendre cette classe pour supprimer la validation. Ensuite, il y a une grande boule de neige dans la chaîne, en modifiant SOAPEncoder pour utiliser votre XMLEncoder modifié, puis en modifiant Operation pour utiliser votre SOAPEncoder modifié, puis en modifiant WebService pour utiliser votre classe Operation alternative.
J'ai passé quelques heures dessus, mais je dois passer à autre chose. Ça va probablement prendre un jour ou deux.
Vous pouvez peut-être corriger la ligne XMLEncoder et faire un peu de singe Parcheando pour utiliser votre propre classe.
J'ajouterai également que si vous passez à l'utilisation de RemoteObject/AMF avec ColdFusion, le null est transmis sans problème.
Mise à jour du 16/11/2013 :
J'ai encore un ajout récent à mon dernier commentaire sur RemoteObject/AMF. Si vous utilisez ColdFusion 10, les propriétés dont la valeur est nulle sur un objet sont supprimées de l'objet côté serveur. Ainsi, vous devez vérifier l'existence des propriétés avant d'y accéder ou vous obtiendrez une erreur d'exécution.
Vérifiez comme ceci :
<cfif (structKeyExists(arguments.myObject,'propertyName')>
<!--- no property code --->
<cfelse>
<!--- handle property normally --->
</cfif>
Il s'agit d'un changement de comportement par rapport à ColdFusion 9, où les propriétés nulles se transformaient en chaînes vides.
Edit 12/6/2013
Étant donné qu'une question a été posée sur la façon dont les valeurs nulles sont traitées, voici un exemple d'application rapide pour montrer comment une chaîne de caractères "null" est liée au mot réservé null.
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" initialize="application1_initializeHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function application1_initializeHandler(event:FlexEvent):void
{
var s :String = "null";
if(s != null){
trace('null string is not equal to null reserved word using the != condition');
} else {
trace('null string is equal to null reserved word using the != condition');
}
if(s == null){
trace('null string is equal to null reserved word using the == condition');
} else {
trace('null string is not equal to null reserved word using the == condition');
}
if(s === null){
trace('null string is equal to null reserved word using the === condition');
} else {
trace('null string is not equal to null reserved word using the === condition');
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:Application>
La sortie de la trace est :
La chaîne de caractères nulle n'est pas égale au mot réservé nul en utilisant la condition !=.
La chaîne de caractères nulle n'est pas égale au mot réservé nul en utilisant la condition ==.
la chaîne de caractères nulle n'est pas égale au mot réservé nul en utilisant la condition ===
6 votes
Cela ne vous aidera peut-être pas beaucoup à résoudre votre problème spécifique, mais SOAP 1.2 autorise les valeurs nulles, cf. w3.org/TR/2001/WD-soap12-20010709/#_Toc478383513
8 votes
J'ai le sentiment que ça implique Dave Null.
2 votes
Au moins, ça n'implique pas Chuck Norris. Voici pourquoi il faut rester loin de lui en code : codesqueeze.com/
71 votes
L'employé a-t-il envisagé de changer de nom ?
5 votes
Référencé sur la BBC : bbc.com/future/story/
24 votes
Il devrait vraiment envisager d'acheter un Pointeur et l'appeler NullPointer.
2 votes
Cet employé doit être un parent éloigné de Tables Little Bobby .