Nouveau type: UUID (ou GUID)

Bonjour,

J’aimerais ajouter un nouveau type (comme string/integer), qui peut se générer automatiquement:
Le UUID (appelé aussi GUID). Forme: 3E8B7303-BE61-4A85-8D48-E168718E4A7A.
Malheureusement, j’ai essayé en modifiant les “domain-models” dans le header du XML, sans succès.
Comme ajouter ce type, ou pouvez-vous l’ajouter ?

Cordialement.

Je suis pas sur de ce que je vais avancer mais pour ajouter un nouveau type il faut changer le domain-model.xsd selon moi. Comme je suis pas sur des répercutions je te conseille plutôt de créer une méthode java qui calcul l’UUID la converti en string et avec un action-attr changer la valeur d’un champs de type string

Merci pour ta réponse :slight_smile:

Effectivement, j’ai essayé de changer de domain-model.xsd. L’IDE l’a bien détecté (donc je pouvais le mettre dans le XML sans erreur) mais pas le compilateur.
Perso, je n’arrive pas à faire fonctionner un action-method ou action-attr pour lancer du Java. Comment fais-tu ?

Déjà tu utilise un déclencheur pour appeler l’action (par exemple onNew). Ton action-method aura cette tête

<action-method name="action.set.cle">
  <call class="com.axelor.apps.base.db.repo.Cle_deverouillage" method="maj"></call>
</action-method>

et ta classe comme ceci :

public class Cle_deverouillage {
	
	  @CallMethod
	  public void maj (ActionRequest request, ActionResponse response) {
            Stock materiel = request.getContext().asType(Stock.class);
            ...
            ...
            response.setValue("code_deverouillage", "error");
      } 
}
1 « J'aime »

D’accord, merci !
Et il faut déclarer la class quelque part ? Ou le package ? (utiliser “bind(Something).to(Cle_deverouillage)” ?)

Non je n’en ai jamais eu besoin

Alors.
Voici mon action-method:

<action-method name="index.generate.guid">
   <call class="package.GuidGenerator" method="generate"></call>
</action-method>

Ma Class:

public class GuidGenerator {

	@CallMethod
	public void generate(ActionRequest request, ActionResponse response) {
		FileManager.writeFile(new Timestamp(System.currentTimeMillis()).toString() + ":  UUID");
		response.setValue("mdguid", UUID.randomUUID().toString());
	}
}

Enfin, dans mon Formulaire j’ai ce champ:

<field name="mdguid" max="36" onNew="index.generate.guid" />

Mais il ne se passe rien. Il n’y a rien dans le fichier, aucune erreur.
Qu’est-ce que fais mal ?

EDIT: ça fonctionne avec le “onChange”

1 « J'aime »

En effet le onNew se place directement dans la balise
<form onNew="index.generate.guid"></form>

1 « J'aime »

Bonjour,

Tout fonctionne correctement, mais je souhaiterai faire un système plus “général”, ou il serai possible de donner un attribut spécifique, pour identifier le champ comme devant faire tel truc. (pas une action, seulement un champ pour le repérer)

En gros tu voudrais créer un nouveau widget ? Je serai intéressé aussi si quelqu’un à une piste

Soit un widget complet pour les GUID oui, soit au moins un petit attribut comme required="true".

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.