将taglib嵌入到jsp中的锚标记中以调用不同的servlet

时间:2017-02-20 08:30:16

标签: java html jsp servlets

标题

      <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

//菜单栏中的选项 -

      <a href="#" data-toggle="modal" data-target="#login-modal"<c:set var="role" value="admin" scope="session" />>Log in as Administrator</a> 
      <a href="#" data-toggle="modal" data-target="#login-modal"<c:set var="role" value="user" scope="session" />>Log in as User</a> 

//根据设定值选择一个servlet

  <c:choose>
  <c:when test="{role == 'admin'}">
  <div>

<button type="submit" class="btn btn-primary btn-lg btn-block" onclick="window.location.href='AdminServlet.java'">Login</button>
</div>
</c:when>
<c:otherwise>
<div>
<button type="submit" class="btn btn-primary btn-lg btn-block" onclick="window.location.href='UserServlet.java'">Login</button>
</div>
 </c:otherwise>
                        </c:choose>

请建议我如何使用上面的taglib标签来调用servlet,具体取决于设置值。以上代码无效。

2 个答案:

答案 0 :(得分:0)

这段代码c:out只是设置变量,而不是在实际的html中打印,要打印它,您必须在设置后使用${role}$

您还忘记了<c:when test="{role == 'admin'}">中的<c:when test="${role == 'admin'}">,因此它应该是{{1}}

答案 1 :(得分:0)

假设您正在尝试在显示登录选项的模型中加载iframe。单击其中一个锚元素(一个用于管理员,另一个用于普通用户)

将加载模型

从锚点内部设置c:set不能作为锚点工作是客户端组件,c:set在服务器本身中进行评估。

相反,使用新的jsp作为锚点的href,并将用户角色选择作为参数传递,如下所示

@echo off
:: Use a FOR loop
for %%F in ("%~dp0") do echo %%~F

:: Use delayed expansion.
:: Note that delayed expansion must be enabled after assignment of fullPath,
:: else any ! within path will be corrupted during the assignment.
set "fullPath=%~dp0"
setlocal enableDelayedExpansion
echo !fullPath!

现在在你的loginpage.jsp中定义按钮如下 -

<a href="#" data-toggle="modal" data-target="#login-modal" href="/loginPage.jsp?role=admin">Log in as Administrator</a> 
<a href="#" data-toggle="modal" data-target="#login-modal" href="/loginPage.jsp?role=user"  >Log in as User</a> 

注意:您需要在web.xml中为/ userLogin和/ adminLogin提供url映射以映射到相应的servlet