Afin de créer un objet métier, je passe d’abord par un objet externe, accessible via un bouton d’action ([EXPR:HTMLTool.getExternalObjectURL(“objet externe”, “nav=new”)], afin de préremplir manuellement certaines informations, puis automatiquement d’autres grâce au code spécifique.
Côté Java, mon objet hérite de ResponsiveExternalObject.
Le problème est que lorsque l’utilisation du bouton d’action se fait sur la vue d’accueil, alors l’objet externe est affiché dans la vue. Je souhaite que l’affichage se fasse hors de cette vue :
[EXPR:HTMLTool.getExternalObjectURL(“objet externe”, “nav=new”)]
est une syntaxe legacy V3 qui ne permet pas de spécifier dans quel container on veut afficher la réponse.
Depuis la V4, il est préférable de toujours utiliser les API front pour afficher un contenu ($ui.loadURL, $ui.displayForm, $ui.displayList…) qui ont toujours le container en paramètre. Si on met null, ça ira dans #work = la zone principale.
L’action front devra être un javascript pour s’exécuter en front :
// null = zone de travail
javascript:$ui.loadURL(null, $app.getExternalObjectURL("MyObjExt", "nav=new"))
// ou si on veut la charger dans une div de son template de formulaire
javascript:$ui.loadURL($("#mydiv"), $app.getExternalObjectURL("MyObjExt", "nav=new"))
nav=new sert juste à créer un nouveau fil d’ariane en haut de page, ça n’indique pas où afficher le contenu.
Lorsque j’avais tenté de passer par une syntaxe en javascript, je n’obtenais pas un affichage correct du HTML. Il ne s’affiche que sous forme de JSON. Là, c’est encore le cas :
Est-ce que c’est parce que je passe par une classe Java héritant de ResponsiveExternalObject et utilisant la méthode surchargée : public JSONObject data(Parameters params) ou il s’agit d’une question de paramètres systèmes à ajuster ?
Lorsque je tente d’indiquer une div contenu dans le HTML de mon objet externe (exemple ci-dessus id=“createS4”) alors rien ne s’affiche.
Infos techniques :
Simplicité version5.3.44
Built on2024-07-25 12:00
OSLinux amd64 3.10.0-1160.118.1.el7.x86_64
ServerApache Tomcat/9.0.91 WEB
DatabaseMySQL 5.5.68-MariaDB using BLOBs
JVM17.0.1 Eclipse Adoptium OpenJDK 64-Bit Server VM 17.0.1+12
Si l’URL est complète (commence par http), Simplicité affiche le contenu dans une iframe par défaut pour isoler tout contenu qui viendrait d’ailleurs.
Si l’URL est relative (commence par /), le contenu est directement interprété/inliné. getExternalObjectURL ne doit pas retourner une URL relative, il faut donc l’aider un peu.
Il ne peut pas s’afficher à l’intérieur de lui-même… Le conteneur est forcement en dehors du contenu !
Nous conseillons aux utilisateurs de marquer comme “solution” la réponse résolvant leur problématique pour permettre au support de mieux suivre les sujets non résolus, et à la communauté de trouver plus facilement la bonne réponse.
Vos messages indiquant une résolution du problème, nous avons réalisé cette opération pour vous.