2

ユニアセスメント用のバリデーターサーブレットをテストするための jsp ページを作成しています。

私はjspを初めて使用するので、最初のページの読み込み時にフィールドが空であることを確認する方法を知りたいだけです.

フォームが送信されると、フィールドが空かどうか (ユーザーが入力した値があるかどうか) をチェックするサーブレットに送信され、空の場合はエラー メッセージと共にフォームにリダイレクトされるという考え方です。

だからここに私のjspフィールドがどのように見えるかのスニペットがあります:

<td class="formlabel">Name:</td>
<td><input type="text" size="27" id="name" name="name" value="<%= session.getAttribute("name")%>" /></td>

<%
if((String)session.getAttribute("name") == "") {
%>
    <span class="error">No name entered</span>
<%
}
%>

しかし、現在私が得ている問題は、セッション属性がnull. null入力フィールドに表示されます。最初の jsp ロードにはこれを使用したくありません。空白にしたいだけです。どうすればいいですか?

4

2 に答える 2

4

JSP EL を使用します。

<input type="text" name="name" value="${name}" />

属性が null の場合、JSP EL は何も出力しません。

とにかく、スクリプトレットは避けるべきです。

于 2012-08-15T02:43:06.373 に答える
1

値を確認するには、次の value="<%= session.getAttribute("name")%> ように分割します。いくつかのステートメントに分割します。

<%= String name = session.getAttribute("name");
    if(name == null) name = "";    
%>value="<%=name%>

ただし、一般的に、多くのフィールドを検証する代わりに、id="submitted"およびvalue="Y"を使用してフォームに別の非表示の入力パラメーターを追加することをお勧めします。

<input type="hidden id="submitted" name="submitted" value="Y">

次に、このPOST/GETパラメーターをチェックする行を追加します。

String submitted = request.getParameter("submitted");

if条件を次のように変更します。

 <%if((String)session.getAttribute("name") == "" && "Y".equals(submitted)){%>

備考:
文字列の比較(Javaの場合)は、equals()-を使用して行う必要があります。==

于 2012-08-15T02:43:59.010 に答える