2

我正在创建一个 jsp 页面来测试验证器 servlet 以进行 uni 评估。

我是 jsp 的新手,所以我只想知道如何确保在第一页加载时该字段为空。

这个想法是,当表单被提交时,它被发送到一个 servlet,该 servlet 检查字段是否为空(它们具有用户输入的值),如果它们为空,则将它们重定向回带有错误消息的表单。

所以这是我的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}" />

当属性为空时,JSP EL 不会输出任何内容。

无论如何都应该避免使用 Scriptlet。

于 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()- 而不是 with==

于 2012-08-15T02:43:59.010 回答