LaBee Framework パラメータ入力チェック方法

LaBee FrameworkはJavaによるWebシステム開発のデファクトスタンダードを目指す、ゼロから作られた国産のJavaフレームワークです。 海外製フレームワーク特有の難解さや情報不足による工数や人員の増大を解消しJavaのWeb開発を効率化する為に作られました。 LGPLライセンスでソースコードをオープンソース公開しており、個人・企業問わずどなたでも無償で利用出来ます
https://www.bee-wkspace.com/
![press.jpg](https://qiita-image-store.s3.amazonaws.com/0/137533/9ec50bce-b5dd-3ed3-f1f3-c6f5e9a4d106.jpeg)


#パラメータ入力チェック 

例としてログイン画面にユーザIDを入力するテキストボックスが有り、ログインボタン押下時にログイン認証イベントを実行する際にユーザID入力値の未入力チェックや半角英数チェック等のパラメータ入力チェックを行いますが、LaBeeFrameworkではこの機能を簡単に実装する事が出来ます。

![sample_login.gif](https://qiita-image-store.s3.amazonaws.com/0/137533/4623b25e-a1a6-4ae8-481e-dde6996a79e5.gif)
**JSP実装例**

~~~
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ page session="false"%>
<%@ taglib prefix="LaBee"  uri="/WEB-INF/lib/LaBeeFramework.jar"%>
<jsp:useBean id="bean" class="sample.bean.web.SampleBean" scope="request" />
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <LaBee:header requestScope="${requestScope}"/>
</head>
<body>
    <form name="mainForm" method="post" action="ctrl">
    
      <div>ユーザID</div>
 	  <LaBee:textbox 
	        name="userId" 
	        value="${bean.userId}" 
	        bean="${bean}"/>
	        
      <LaBee:submitButton 
        target="web.Sample"
        execute="login" 
        value="ログイン"
        formName="mainForm"/>	        
    
    </form>
</body>
</html>       
~~~


- SampleBeanのuserIdパラメータ内容を入力、表示するユーザIDテキストボックスを定義。name値はビーンパラメータ名と合わせる必要があります。
- SampleBlogicのloginイベント処理を呼び出すログインボタンを定義。 


**Bean実装例**

~~~
package sample.bean.web;
import java.io.Serializable;
import com.bee_wkspace.labee_fw.app.base.AppBaseBean;
import com.bee_wkspace.labee_fw.app.base.AppInputCheckBean;
import com.bee_wkspace.labee_fw.core.annotation.AutoSetterParam;
import com.bee_wkspace.labee_fw.common.Validater;
/**
* 入力チェックサンプルビーンクラス
*/
public class SampleBean extends AppBaseBean implements Serializable {
    /** ユーザID    */
    private String userId; 
    /**
     * コンストラクタ。
     */
    public SampleBean() {
        super();
    }
    
    /**
     * ユーザIDをセットし入力チェックを行なう。
     * 
     * @param paramName パラメータ名
     * @param value パラメータ値
     */
    @AutoSetterParam
    public void setUserId(String paramName, String value) {
        userId = value;
        AppInputCheckBean inpChkBean = new AppInputCheckBean(this, paramName, value, "ユーザID");
        Validater.checkNull(inpChkBean);
        Validater.checkHankakuEisuuKigou(inpChkBean);
        Validater.checkMaxLength(inpChkBean, 16);    
    }
    
    public String getUserId() {
        return userId;
    }
}
~~~

- 16行目 userIdパラメータ変数を定義
- 32行目 userIdパラメータをセットするsetUserIdメソッドを定義。命名規則はセッターメソッド準拠。引数は名と値の2個。
- 31行目 setUserIdメソッドには自動セッター呼び出し機能を使用するので@AutoSetterParamアノテーションを付加します。
- 34行目 入力チェック情報ビーンを生成します。
- 35～37行目 パラメータ入力チェックを実行します。それぞれ未入力チェック、半角英数チェック、最大文字数チェックを行なっています。
- 例の様にValidaterクラスの入力チェックメソッドを多段で実行する事で複数のチェックを行なう事が出来ます。
- Validaterクラスが持つ入力チェックメソッドの種類についてはJavaDocを参照ください。 


**Blogic実装例**

~~~
package sample.blogic.web;
import  sample.bean.web.SampleBean;
import com.bee_wkspace.labee_fw.app.base.AppBaseBlogic;
import com.bee_wkspace.labee_fw.core.annotation.FwBlogic;
import com.bee_wkspace.labee_fw.core.annotation.FwExeMethod;
import com.bee_wkspace.labee_fw.core.base.BaseBean;
import com.bee_wkspace.labee_fw.core.context.ResponseContext;
import com.bee_wkspace.labee_fw.exception.FwException;
/**
 * 入力チェックサンプルビジネスロジック
 */
@FwBlogic(beanReuse = true)
public class SampleBlogic extends AppBaseBlogic<SampleBean> {
    /**
     * コンストラクタ。
     */
    public SampleBlogic() {
        super();
    }
    
    /**
     * ログインイベント処理。
     */
    @FwExeMethod
    public ResponseContext login() throws FwException {
        try {
            // 自動パラメータセッター実行
            super.doAutoBeanSetter();
            // パラメータ入力チェック結果判定            
            if (bean.isInputChkErrFlg() == BaseBean.INPUT_CHK_RESULT_SUCCESS) {
                System.out.println("認証OK");
            }
        } catch (Exception e) {
            throw new FwException(e);
        }
        return responseContext;
    }    
}
~~~

- 29行目 Web画面から送信されたログインイベント処理を実行するメソッドを定義します。必ず@FwExeMethodアノテーションを付加する。
- 32行目 親クラスで定義している自動パラメータセッター実行メソッドを呼び出します。このメソッドを呼び出す事でbeanで定義した@AutoSetterParamアノテーションを付加したセッターメソッドが実行され、同時に入力チェックが行なわれます。(入力チェックを行なわない通常のセッターメソッドでも@AutoSetterParamアノテーションを付加すると呼び出されます)
- 35行目 入力チェック結果の判定はbean.isInputChkErrFlg()で取得出来、成功判定はBaseBean.INPUT_CHK_RESULT_SUCCESS定数を使用します。
- パラメータ入力チェックでパラメータエラーが存在している場合は、自動的に以下のダイアログが画面に表示されます。 

![ipt_err_dialog.gif](https://qiita-image-store.s3.amazonaws.com/0/137533/e1297760-5856-0a1a-111b-2c34d68025f3.gif)