Wicket コンポーネントでタグ属性を追加した場合、
org.apache.wicket.markup.ComponentTag の、put メソッドを使った場合、
value は、必ずダブルクォート(")で括られてしまう。
tag.put("date-role","datebox"); → date-role="datebox"
属性値を シングルクォートで括りたい場合に困る。
例えば、
<input id="mydate" name="mydate" type="date" data-role="datebox"
data-options='{"mode": "calbox"}'
/>
data-options の値、このようにシングルクォートで括って書くのが普通だが、
data-options="{"mode": "calbox"}"
でも良い。
Wicket の ComponentTag の、put メソッドで渡す値 value の方に、
(") ダブルクォートが含まれていると、" に変換してくれる。
よって、onComponentTag で以下のように書けば、
@Override
protected void onComponentTag(ComponentTag tag){
tag.put("data-options","{\"mode\": \"calbox\"}");
}
タグ属性として、
data-options="{"mode": "calbox"}"
が出力される。