final Fn<ValidatorContext, Boolean> fn = (コンポジットツリー); final Visitor<StringBuilder> visitor = new Visitor<StringBuilder>(); visitor.setMap(VisitorAppUtils.JS); visitor.setSubContext(new StringBuilder()); visitor.visit(object); System.out.println(visitor.getSubContext().toString()); |
var validator_tree = (取得した Javascript コンストラクタツリー); |
function checkAndAlert(form){ // acition を id に変換する。 var id = form.getAttribute("action"); id = id.replace("(.+)\\.[^\\.]+", "$1"); var context = new ValidatorContext(); context.collectable = new SimpleMessageCollector(); context.id = id; // フォームの入力値集合を本フレームワークの入力値集合の構造に変換する。 context.inputMap = convertFormToListMap(form); // 値検証を実行する。 var flag = validator_tree.exec(context); if(!flag){ // 値検証結果が false の場合はメッセージ一覧の加工して操作者に表示する。 var sb = ""; for(var i in context.collectable.messageList){ sb = sb + "\n" + context.collectable.messageList[i]; } alert(sb); } // 値検証結果を返す。 return flag; } |
<!-- 値検証のコアファイルを読み込む --> <script src="validator_core.js"></script> <!-- 上で作成した js ファイルを読み込む --> <script src="validator_sample.js"></script> <!-- サブミット時に値検証/結果出力処理を呼び出す --> <script> window.onload = function(){ window.document.form0.onsubmit = function(){ return checkAndAlert(window.document.form0); }; }; </script> |