根据JSP中的用户凭据启用/禁用提交按钮

时间:2014-04-30 11:59:34

标签: jsp servlets jstl

我有一个包含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>

有人能告诉我哪里出错了,或者有更好的方法来测试启用或禁用按钮的条件

2 个答案:

答案 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'}">