2017-05-22 44 views
0

我是Wicket的新手,在檢票器中配置文本字段時遇到問題。我需要在此文本字段配置期間添加一些Javascript,以便我可以將其轉換爲Bootstrap Datepicker元素(我已經使用DateTimeField和DateTextField,並且它們添加了日曆,小時和分鐘字段,我不想要)Wicket TextField - 添加Javascript

I嘗試下面的代碼 -

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; 
} 

上面的代碼工作,並在onload中添加JS語句,但是,尋找另一種方法來添加Javascript,以便我可以執行更多的JS行來實現我需要的功能。

+0

Wicket支持資源加載(css,js,...)。核心元素是方法Component.renderHead。你可能會發現有用的這部分的urser指南: https://ci.apache.org/projects/wicket/guide/8.x/single.html#_adding_resources_to_page_header_section –

+0

Thq @Andrea Del Bene。資源加載我已經完成了使用您提供的鏈接中提到的方法。我正在尋找添加像AjaxRequestEvent一樣可用的AppendJavaScript()方法的自定義JavaScript。 – ChilBud

回答

1

您需要使用

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

您還可以使用OnLoadHeaderItemOnEventHeaderItem如果你認爲他們是你的使用情況較好。

+0

謝謝@ martin-g。我已經使用了 response.renderOnDomReadyJavaScript();因爲onDomReadyHeaderItem不起作用。 – ChilBud

+0

我正在接受您的答案,因爲它在解決我的解決方案時非常接近,並相信對其他人也有好處。 – ChilBud

+0

看來你使用的是6.0.0以前的版本,這就是API看起來不同的原因。我建議你升級到一個維護的版本! –