J'ai essayé de migrer une petite application réalisée avec Wicket7 vers Wicket8. Un jeu qui efface les erreurs et les avertissements et énumère le contenu réécrit jusqu'au point où il fonctionne pour le moment. Je ne me sens pas mieux maintenant. De plus, Lambda n'est pas géré.
C'est Nanika comme un mémorandum. Si vous souhaitez migrer correctement, assurez-vous de consulter le Guide de migration d'origine.
Le formulaire qui était passé comme argument jusqu'à présent a disparu. Je ne l'ai pas mentionné dans mon code, alors supprimez simplement l'argument. Si vous le souhaitez, vous pouvez l'obtenir avec ʻAjaxButton.getForm () `.
et ʻAjaxFallbackButton.onSubmit ()
.Par exemple, ʻAjaxFormComponentUpdatingBehavior`.
python
//jusqu'à maintenant"onchange"Cela a fonctionné même si je l'ai spécifié ...
hoge.add(new AjaxFormComponentUpdatingBehavior("change") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
//Quelque chose de traitement
}
});
Il n'y a pas d'exceptions même si ʻon est attaché, mais JavaScript ne fonctionne pas. Depuis l'époque de Wicket 6.x, il semble qu'un journal d'avertissement soit apparu dans le journal disant "N'écrivez pas. Je vous pardonne maintenant, mais pardonnez-moi à partir de 8." Je n'ai pas remarqué. Je m'en fiche, mais je pense que le nom de classe ʻAjaxFormComponentUpdatingBehavior
est trop long.
N'utilisez pas de latte. Avec IDE, la ligne d'annulation est dessinée et la sensation d'utilisation est doublée. C'est facile à réparer, remplacez-le simplement par ʻIModel`.
Je l'ai utilisé via une étiquette comme celle ci-dessous, donc je ne l'ai changé qu'à un seul endroit. ʻAbstractReadOnlyModel` a beaucoup de caractères, donc je ne voulais simplement pas l'écrire plusieurs fois.
ReadOnlyLabel.java
package yamane.wicket;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
public abstract class ReadOnlyLabel<T> extends Label {
public ReadOnlyLabel(String id) {
super(id);
//J'ai réécrit ceci sur IModel
// setDefaultModel(new AbstractReadOnlyModel<T>() {
setDefaultModel(new IModel<T>() {
@Override
public T getObject() {
return load();
}
});
}
protected abstract T load();
}
Java 8 est requis et la méthode par défaut de l'interface peut être utilisée. Très rafraîchissant.
C'est presque la même chose que ʻAbstractReadOnlyModel. Remplacez ʻextends
par ʻimplements et remplacez ʻIRequestCycleListener
par la méthode par défaut ajoutée.
Mais cela n'a pas été mentionné dans le guide de migration, non? Je l'utilise souvent pour la manipulation avant d'écrire la page d'erreur, mais je me demande si tout le monde l'utilise.
Super.onConfigure ()
est maintenant requis lors de la substitution.
Jusqu'à présent, l'implémentation de Component.onConfigure ()
était vide, alors j'ai pensé "Je n'ai pas besoin de l'appeler, la description en une ligne sera réduite", mais à partir de Wicket8, "Non, exception, vous mourrez". Je vais.
hein? Avez-vous déjà mentionné qu'il était essentiel pour JavaDoc?
Je suis désolé de ne pas l'avoir lu.
Comme il s'agit d'une méthode fréquemment remplacée, il y a de nombreux changements. Je viens de grep et de copier. C'était le plus gros pour moi.
C'était beaucoup moins de changement que ce à quoi je m'attendais.
Je pense personnellement que le code des applications Wicket sera assez différent pour chaque programmeur. Ce n'est pas la bonne erreur, mais l'individualité ou l'habitude. Donc, je suis sûr qu'il y aura différents emplacements de réécriture pour les applications Wicket 7 créées par différentes personnes. Je n'ai pas vu beaucoup de code pour les applications Wicket créé par quelqu'un d'autre que moi, donc je ne suis pas sûr.
Il se termine brusquement après avoir fait appel de l'inutilité de cet article.
Recommended Posts