我有一个包含JSP和servlet的Web应用程序。我想在表单中启用某些提交按钮,只能使用名为" admin"和密码" admin"。我从login.jsp页面获取用户凭据并将它们传递给servlet,然后返回到displayrecord.jsp,我想要测试if username =" admin"和密码=" admin"然后启用编辑,删除和上传或者取消它们。但不幸的是,这不起作用。
这是JSP页面中用于从servlet获取值的代码
<%
String uname= (String)session.getAttribute("UserName");
String upass= (String)session.getAttribute("UserPassword");
%>
以下是我尝试使用JSTL
测试条件的代码<c:choose>
<c:when test="{<%=uname%> == 'admin'}&& {<%=upass%> == 'admin'}">
<form id="edit" action="EditRecord" method="post" >
<td><input type="hidden" name="hidden_edit" id="edit_id" value="<%=s %>"/>
<input type="submit" value="Edit" name="edit"> </td>
</form>
<form id="delete" action="DeleteRecord" method="post" >
<td><input type="hidden" name="hidden_delete" id="delete_id" value="<%=s %>"/>
<input type="submit" value="delete" name="delete"> </td>
</form>
</c:when>
</c:choose>
<c:otherwise>
<form id="edit" action="EditRecord" method="post" >
<td><input type="hidden" name="hidden_edit" id="edit_id" value="<%=s %>"/>
<input type="submit" value="Edit" name="edit"> </td>
</form>
<form id="delete" action="DeleteRecord" method="post" >
<td><input type="hidden" name="hidden_delete" id="delete_id" value="<%=s %>"/>
<input type="submit" disabled="disabled" value="delete" name="delete"> </td>
</form>
</c:otherwise>
有人能告诉我哪里出错了,或者有更好的方法来测试启用或禁用按钮的条件
答案 0 :(得分:1)
Scriplet代码将直接插入到页面中,因为jstl变量是基于范围的。因此,在pagecontext中添加用户名和密码,并使用jstl访问它们。
<%
String uname= (String)session.getAttribute("UserName");
String upass= (String)session.getAttribute("UserPassword");
pageContext.setAttribute("uname",uname);
pageContext.setAttribute("upass",upass);
%>
并将jstl代码更改为:
<c:choose>
<c:when test="{uname == 'admin' && upass == 'admin'}">
<form id="edit" action="EditRecord" method="post" >
<td><input type="hidden" name="hidden_edit" id="edit_id" value="<%=s %>"/>
<input type="submit" value="Edit" name="edit"> </td>
</form>
<form id="delete" action="DeleteRecord" method="post" >
<td><input type="hidden" name="hidden_delete" id="delete_id" value="<%=s %>"/>
<input type="submit" value="delete" name="delete"> </td>
</form>
</c:when>
<c:otherwise>
<form id="edit" action="EditRecord" method="post" >
<td><input type="hidden" name="hidden_edit" id="edit_id" value="<%=s %>"/>
<input type="submit" value="Edit" name="edit"> </td>
</form>
<form id="delete" action="DeleteRecord" method="post" >
<td><input type="hidden" name="hidden_delete" id="delete_id" value="<%=s %>"/>
<input type="submit" disabled="disabled" value="delete" name="delete"> </td>
</form>
</c:otherwise>
</c:choose>
你关闭c:在c:之后选择。你需要在c之后关闭:否则。这样就可以确保在条件失败时显示其他内容。
答案 1 :(得分:0)
尝试将条件更改为:
<c:when test="{uname == 'admin' && upass == 'admin'}">