【问题标题】:Enabling/disabling submit button based on user credentials in JSP基于 JSP 中的用户凭据启用/禁用提交按钮
【发布时间】:2014-04-30 11:59:33
【问题描述】:

我有一个包含 JSP 和 servlet 的 Web 应用程序。我想仅向用户名为“admin”和密码“admin”的人启用表单中的某些提交按钮。我从 login.jsp 页面获取用户凭据并将它们传递给一个 servlet,然后返回到 displayrecord.jsp,我想在其中测试 username="admin" 和 Password="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>

谁能告诉我哪里出了问题或者有什么更好的方法来测试启用或禁用按钮的条件

【问题讨论】:

    标签: jsp servlets jstl


    【解决方案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:when 之后关闭了 c:choose。您需要在 c:other 之后关闭。这样可以确保在条件失败时显示其他内容。

    【讨论】:

    • 感谢您的回复。我在 JSP 页面中尝试了您的代码,但是 page.addAttribute 出现错误,因为 pageContext 没有名为 addAttribute 的函数。你确定是pageContext.addAttribute..
    • 另外,我使用 EL 获得了 ${UserName} 和 ${UserPassword} 中的用户名和密码。如何使用 EL 检查条件并禁用提交按钮..请指导我
    • 应该设置属性。更新了我的答案,现在试试看。
    • 我试过了,但没用。按钮在“管理员”用户凭据和其他凭据上都被禁用了...我们可以尝试 EL 来检查条件
    • 我在发布之前测试了这段代码。从这里清理/删除并尝试使用它。
    【解决方案2】:

    尝试将条件更改为:

     <c:when test="{uname == 'admin' && upass == 'admin'}">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-15
      • 2010-12-08
      • 2019-03-19
      • 2014-11-27
      • 1970-01-01
      • 2014-11-28
      相关资源
      最近更新 更多