JBoss Seam Ajax Validation
JBoss SeamにおけるAjaxの非同期バリデーションは以下の要領で行います。
ローカルインターフェース
@Local public interface NameCheck { @WebRemote public abstract boolean isExists(String name);
Stateless Session Bean
@Stateless @Name("nameCheck") public class NameCheckBean implements NameCheck { public boolean isExists(String name) { if (チェックする) { return false; } else { return true; } } }
JSP(body部から抜粋)
<body> <script type="text/javascript" src="seam/remoting/resource/remote.js"></script> <script type="text/javascript" src="seam/remoting/interface.js?nameCheck"></script> <script type="text/javascript"> // <![CDATA[ function checkName(i){ s = i.value; Seam.Component.getInstance("nameCheck").isExist(s, checkNameCallBack); } function checkNameCallBack(result){ if(result){ document.getElementById("nameError").innerHTML = '<span style="color:red;">This name is already regist</span>'; }else{ document.getElementById("nameError").innerHTML=''; } } // ]]> </script> <f:view> <h:form> <h:inputText value="#{hoge.name}" required="true" onblur="javascript:checkName(this)" /> <span id="nameError"></span> ・・・ボタン等・・・ </h:form> </f:view> </body>
web.xml(変更点)
Seam Remoting org.jboss.seam.remoting.SeamRemotingServlet Seam Remoting /seam/remoting/*
これと同等な機能をTeedaAjaxを用いた場合として近日中に書きます。
# TeedaAjaxでの非同期バリデーション
これは、S2JSFにおいても有効だと思います。
Teedaにおいて、diconに登録したValidatorによって非同期バリデーション
する機能を提供しようとして、そのままになっていたので
SeasarConまでにはなんとか実装してサンプルを出したいと思います。