PGBox
P
G
Box

logic notPresentタグ

logicタグのメニューへ戻る



使用した環境
JDK 6 Update 11
struts 1.3.10

チェック対象が、存在しない場合にボディ部を評価します。


属性必須意味
nameチェック対象にbeanを使用する場合に指定。対象のbean名を指定する。
propertyチェック対象にbeanを使用する場合に指定。対象のbeanのプロパティ名を指定する。
scopeチェック対象にbeanを使用する場合に指定。対象のbeanを取得するスコープを指定する。page・request・session・applicationのいずれかを指定。省略時は自動的にbeanが存在するスコープが検索される。
parameterチェック対象にリクエストパラメータを使用する場合に指定。リクエストパラメータ名を指定する。
headerチェック対象にリクエストヘッダを使用する場合に指定。リクエストヘッダ名を指定する。
cookieチェック対象にクッキーの値を使用する場合に指定。クッキー名を指定する。
userチェック対象に認証済みユーザの名前を使用する場合に指定。HttpServletRequest#getUserPrincipal().getName()で得られる値と同一値であるかどうかで判定される。
roleチェック対象に認証済みユーザのロールを使用する場合に指定。カンマ区切りで複数指定可能。HttpServletRequest#isUserInRole()を使用して判定が行われる。



例えば、Formが以下のように定義されており
public class SampleForm extends ActionForm {
    
    private String str1;
    
    private String str2;
    
    ※ 以下、setter, getter
}


Actionでは以下のように処理したとします。
public ActionForward execute(ActionMapping mapping, ActionForm form0, ...
    SampleForm form = (SampleForm) form0;
    
    form.setStr1("ABC");
    form.setStr2(null);
    
    return mapping.findForward("success");
}


フォーム内の値に対し、条件をかけるには、JSPでは以下のようにします。
<logic:notPresent name="SampleForm" property="str1">
    str1の値は存在しない<br />
</logic:notPresent>
<logic:notPresent name="SampleForm" property="str2">
    str2の値は存在しない<br />
</logic:notPresent>
<logic:notPresent name="SampleForm" property="str3">
    str3の値は存在しない<br />
</logic:notPresent>


結果は以下のようになります。
str2の値は存在しない
str3の値は存在しない


<logic:notEmpty>と似ていますが<logic:notPresent>は、チェック対象のbeanのプロパティが存在しない場合でもチェックする事が可能です。
上記の例では、SampleFormにはstr3というプロパティが存在していませんが、エラーにはなりません。
<logic:notEmpty>で同様の記述を行った場合は、「Bean SampleForm のプロパティ str3 に対するゲッターメソッドがありません」という内容のExceptionが発生します。




logicタグのメニューへ戻る