10
votes

Pourquoi Wicket change-t-il l'identifiant des éléments HTML?

si j'écris xxx pré>

ou même p>

   <form id="form7"....


0 commentaires

5 Réponses :


0
votes

Cela fait longtemps que j'ai travaillé avec Wicket, mais je me souviens que lorsque Wicket utilise des éléments AJAX, son identifiant s est généré automatiquement (le ID de la tag, pas le guichet: id ). Vous pouvez contrôler l'ID de la balise lorsque vous n'utilisez pas et l'élément AJAX. Dans votre cas, puisqu'il n'y a aucun code, je devinerais que vous devrez changer tout ajaxbutton ou ajax * de votre formulaire.


4 commentaires

Les problèmes que je suis confrontés à ces identifiants changeants sont sur le côté client, comme mon CSS ne peut pas utiliser ces identifiants pour mapper les styles, je ne peux pas écrire JavaScript qui joue avec les identifiants d'élément.


@Monis iqbal Vous êtes censé utiliser directement les crochets Ajax de Guanet.


Ce qui signifie que je ne peux pas écrire JavaScript personnalisé? Cette violation de SOC n'est-elle pas supportée par Wicket? parce que JavaScript est censé être client.


@Monisiqbal Vous utilisez des installations telles que cible.AppendjavaScript (..) entre autres



7
votes

C'est le comportement que vous voulez dans la plupart des cas lors de l'utilisation de Wicket. L'ID dynamique est destiné à empêcher les collisions d'ID lorsque des comportements AJAX sont ajoutés aux composants ou ajoutés aux réponses AJAX pour rafraîchir. Pour l'une de ces situations, vous avez vraiment besoin de la réponse du client et de l'état secondaire pour être dans Cahoots. S'il y a des ressources JS externes, vous avez besoin de l'ID d'un composant pour la recherche DOM, je vous suggère d'ajouter un comportement de composant de guichet personnalisé qui générerait ensuite l'appel JS à une fonction passant dans l'ID généré.

Je réalise ce que je vais me décrire vous conduit davantage dans la forêt du guichet. Mais j'ai été plus qu'heureux des trucs Ajaxy que Wicket s'ouvre pour vous hors de la boîte.


3 commentaires

Est-ce une norme de guichet d'écrire même JavaScript dans les fichiers Java?


Comme tout le reste malheureusement, cela dépend. Il existe des exemples pour les bibliothèques de JS (Wicket-Ajax.js par exemple) et généré JS de Java. Le code source de guichet devrait avoir des exemples de ces deux. En fin de compte, à propos de l'un des comportements AJAX standard à un moment donné comprendra un cotisateur d'en-tête standard pour inclure le fichier Wicket-Ajax.js. Découvrez certains des composants AJAX pour voir JS GÉNÉRÉE Beaucoup auront une méthode JS générée ou quelque chose à attacher au composant qui est ajouté à.


@MONIS: Je préfère mettre la quantité minimale quantité de JS dans le code Java, généralement juste un appel à une fonction dans un fichier de .js séparé. un exemple .



4
votes

Ceci est la caractéristique de la guichet. Vous pouvez utiliser la classe pour relier des styles et des composants.

<form wicket:id="form" id="form>


2 commentaires

SetMarkupID est la façon de faire cela voir ma réponse ci-dessous


Oh pardon. Je l'ai mal interprété comme SetOutputkumpid (vrai). Toutes mes excuses @leonidv. et merci@michal



20
votes

Nous définissons de manière approfondie les identifiants de balisage sur notre projet pour faciliter les tests automatiques avec le cadre de test de sélénium. Cela fonctionne définitivement.

Component.setOutputMarkupId(true); // write id attribute of element to html
Component.setMarkupId("someid"); // id attribute of element is "someid"


0 commentaires

0
votes

Oui, vous pouvez écrire JavaScript personnalisé ... Il vous suffit de le mettre en œuvre selon la «Wicket Way». Vous pouvez décorer des composants, des appels AJAX, etc. avec Personnalisé JavaScript, puis tout joue bien.


0 commentaires