我正在创建一个jsp页面来测试验证器servlet以进行单一评估。
我是jsp的新手所以我只是想知道如何在第一页加载时确保该字段为空。
这个想法是,当提交表单时,它会被发送到一个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加载,我只是希望它是空白的。我该怎么做?
答案 0 :(得分:4)
使用JSP EL:
<input type="text" name="name" value="${name}" />
当属性为null时,JSP EL不会输出任何内容。
无论如何都应该避免使用Scriptlets。
答案 1 :(得分: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()
- 而不是==