au端末のcheckboxに注意

auの端末はinputタグのtypeがcheckboxの場合にvalueを指定しないとデフォルトで0が送信されます。
Wicketはこれをfalseとして解釈してしまうので、明示的に値を設定するListenerを書きました。

package net.nagaseyasuhito.sandbox.listener;

import org.apache.wicket.Component;
import org.apache.wicket.application.IComponentInstantiationListener;
import org.apache.wicket.behavior.SimpleAttributeModifier;
import org.apache.wicket.markup.html.form.CheckBox;

public class CheckBoxValueModifier implements IComponentInstantiationListener {
	private String value;

	public CheckBoxValueModifier(String value) {
		this.value = value;
	}

	@Override
	public void onInstantiation(Component component) {
		if (component instanceof CheckBox) {
			component.add(new SimpleAttributeModifier("value", this.value));
		}
	}
}

WebApplication#init()内で、

this.addComponentInstantiationListener(new CheckBoxValueModifier("on"));

と書けばauの端末でも問題なく動作するようになります。