2017-05-22 1 views
0

Je suis nouveau à Wicket et rencontre un problème lors de la configuration d'un champ de texte dans le portillon. Je dois ajouter du Javascript pendant cette configuration de champ de texte afin que je puisse le convertir en élément Bootstrap Datepicker (j'ai déjà utilisé DateTimeField et DateTextField et ils ajoutent le champ de calendrier, d'heures et de minutes que je ne veux pas)Wicket TextField - Ajout de Javascript

I ont essayé le code ci-dessous -

HTML

<div class="input"> 
    <div class="input-group date"> 
     <input wicket:id="dateValue" class="std" style="color: black;" type="text" value="Date value" /> 
     <span class="input-group-addon dateTimePick"><span class="glyphicon glyphicon-calendar"></span></span> 
    </div> 
</div> 

Java

private TextField<String> addValueDatePickerNew(final MarkupContainer parent, final String id, final IModel<String> model) 
{ 
    final TextField<String> result = new TextField<String>(id, model) { 
     private static final long serialVersionUID = 1L; 

     @Override 
     protected void onConfigure() 
     { 
      setVisibilityAllowed(true); 
      setRequired(true); 
     } 

     @Override 
     protected void onComponentTag(ComponentTag tag) 
     { 
      super.onComponentTag(tag); 
      String jsDateField = "{console.log('From ReportFilterValueEditor');}"; 
      tag.put("onload", jsDateField); 
     } 
    }; 

    result.setOutputMarkupId(true); 
    parent.add(result); 
    return result; 
} 

Le code ci-dessus fonctionne et ajoute l'instruction JS pendant le chargement, cependant, en cherchant un autre moyen d'ajouter Javascript afin que je puisse exécuter plus de lignes de JS pour obtenir la fonctionnalité dont j'ai besoin.

+0

Wicket a un support pour le chargement des ressources (css, js, ...). L'élément principal est la méthode Component.renderHead. Vous pourriez trouver utile cette partie du guide de l'urser: https://ci.apache.org/projects/wicket/guide/8.x/single.html#_adding_resources_to_page_header_section –

+0

Thq @Andrea Del Bene. chargement de ressources que j'ai fait en utilisant la méthode mentionnée dans le lien fourni par vous. Je suis à la recherche d'ajouter javascript personnalisé comme AppendJavaScript() méthode qui est disponible pour AjaxRequestEvent. – ChilBud

Répondre

1

Vous devez utiliser

@Override void renderHead(IHeaderResponse response) { 
    response.render(OnDomReadyHeaderItem.forScript("some valid JavaScript Here")); 
} 

Vous pouvez également utiliser OnLoadHeaderItem ou OnEventHeaderItem si vous pensez qu'ils sont mieux pour votre cas d'utilisation.

+0

Merci @ martin-g. J'ai utilisé response.renderOnDomReadyJavaScript (); comme onDomReadyHeaderItem ne fonctionnait pas. – ChilBud

+0

Je marque votre réponse comme acceptée car elle est proche dans la fixation de ma solution et je crois que cela fonctionne bien pour les autres aussi. – ChilBud

+0

Il semble que vous utilisiez une version antérieure à 6.0.0, c'est pourquoi l'API est différente. Je vous recommande de mettre à niveau vers une version qui est maintenue! –