Formコンポーネントで clientValidation="false" にしたとき、余分なマークアップも消す方法
追記: ソース修正しました。BaseValidationDecoratorは中身からっぽで何もしないクラスなので毎回newするのは無駄でした。
Formコンポーネントで clientValidation="false" にすると、ブラウザ上での入力値検証が行われなくなりますが、出力されるHTML上にはエラー表示用のマークアップが残ったままになってしまいます。style="display:none;" となっているので問題無いのですが、この余分なマークアップも消すためのMixinです。
public class ValidationDecoratorDisabled { private static final ValidationDecorator DECORATOR_INSTANCE = new BaseValidationDecorator(); @Inject private Environment _environment; void setupRender() { _environment.push(ValidationDecorator.class, DECORATOR_INSTANCE); } void cleanupRender() { _environment.pop(ValidationDecorator.class); } }
次のように、FormコンポーネントにMixinします。
<t:form t:clientValidation="false" t:mixins="ValidationDecoratorDisabled"> <t:textfield t:id="query"/> <input type="submit" value="検索"/> </t:form>