2
votes

Validation des champs Alfresco Form Javascript non chargé par le navigateur

J'espère que quelqu'un ici pourra vous aider à résoudre ce problème, car j'ai tout fait selon le livre, pour créer une fonction Javascript pour valider un champ de formulaire Alfresco. Voici ce que j'ai fait:

Modification du fichier share-config-custom.xml, comme suit:

if (typeof myspace == "undefined" || !myspace) {
  var myspace = {};
}

myspace.forms.validation.checkDateRangeValidity = function checkDateRangeValidity(field, args, event, form, silent, message) {
  var valid = true;
  alert('Checked date ' + field);
  return valid;
}

Création d'un fichier date-range-validator.js, que j'ai placé dans src/main/assembly/web/js

<forms>
  <dependencies>
    <js src="js/date-range-validator.js" />
  </dependencies>

  <form>
    <appearance>
      <field id="myfield:dfc-start-date">
        <constraint-handlers>
          <constraint type="MANDATORY" validation-handler="myspace.forms.validation.checkDateRangeValidity" event="keyup"/>
        </constraint-handlers>
      </field>
    ...
  </form>  
</forms>

Cependant, lorsque le formulaire est affiché, j'obtiens une exception car "myspace" n'est pas défini, il semble donc que mon code de validation n'est pas en cours de chargement. J'ai essayé de placer le fichier Javascript à différents endroits du projet, mais je ne vois jamais mon code de validation Javascript dans le navigateur.

Donc je suppose que c'est une question de savoir où placer le Javascript dans le structure du projet.


5 commentaires

quelle version de sdk vous utilisez?


Eh bien, c'est Alfresco Share 5.2.d. (Edition communautaire)


faites-vous des changements directement en plein air?


Je ne mets pas de fichiers directement sur l'instance en cours d'exécution d'Alfresco. Tous mes fichiers source sont dans la structure de construction du projet. Je construis l'AMP et je le déploie de cette façon.


veuillez vérifier la réponse mise à jour.


3 Réponses :


2
votes

Votre fichier javascript doit se trouver à l'emplacement share / src / main / resources / META-INF / js.

Suivez ce lien pour le gestionnaire de validation.

https: // docs .alfresco.com / 5.0 / concepts / dev-extensions-share-form-field-validation-handlers.html


3 commentaires

C'est exactement la page que j'utilise.


s'il vous plait verifiez maintenant.


J'ai placé mon fichier js dans le répertoire src / main / resources / META-INF / js, mais le fichier est introuvable dans les ressources js du navigateur lorsque je charge la page



0
votes

Je pense qu'il vous manque peut-être l'élément englobant qui devrait être un parent de .


1 commentaires

J'ai cet élément Jeff. Ce morceau de XML n'est qu'une petite section du fichier share-config-custom.xml. L'ensemble du fichier est bien formé et syntaxiquement correct.



0
votes

Si quelqu'un est intéressé, j'ai une solution grâce à Jeff Potts, qui m'a suggéré de mettre la définition du formulaire dans un module d'extension. Détails sur le forum Alfresco.

https: // communauté .alfresco.com / thread / 240434-form-field-validation-handler-issue

<extension>
  <modules>
    <module>
        <id>Someco Share Form Configuration</id>
        <version>1.0</version>
        <auto-deploy>true</auto-deploy>
        <configurations>

            <config>
                <forms>
                    <dependencies>
                        <js src="/resources/someco-share/js/validator.js"/>
                    </dependencies>
                </forms>
            </config>



            <config evaluator="node-type" condition="sc:doc">
                <forms>
                    <form>
                        <field-visibility>
                            <show id="cm:name" />
                            <show id="cm:title" force="true" />
                            <show id="sc:someProp" />

                        </field-visibility>
                        <appearance>
                            <field id="cm:name">
                                <control>
                                    <control-param name="maxLength">255</control-param>
                                </control>
                            </field>
                            <field id="cm:title">
                                <control template="/org/alfresco/components/form/controls/textfield.ftl" />
                            </field>
                            <field id="sc:someProp" label-id="form.field.label.sc.someProp" description-id="form.field.description.sc.someProp" help-id="form.field.help.sc.someProp">
                                <constraint-handlers>
                                    <constraint type="scDateValidator" message-id="constraint.scDateValidation" validation-handler="SomeCo.forms.validation.scSomePropValidatior" event="onChange"/>
                                </constraint-handlers>
                            </field>
                        </appearance>
                    </form>

                </config>

            </configurations>
        </module>
    </modules>
  </extension>


0 commentaires