【问题标题】:navigation bar css changes after a servlet is called调用 servlet 后导航栏 css 发生变化
【发布时间】:2014-07-10 11:05:22
【问题描述】:

之前:

之后

第一张图片是登录页面,但是当我点击登录按钮时,导航栏变成第二张图片,块之间出现空格。当调用 sevlet 并具有以下代码时会发生这种情况:

out.print("<p style='position:absolute;top:200px;left:300px;color:#CC0066;'>Sorry username or password error! </p>");
            RequestDispatcher rd=request.getRequestDispatcher("login.jsp");
            rd.include(request, response);

CSS代码是:

#menuli{
display: inline;
float: left;
color: #CCCCCC;
}

#menuA,#menuAL {
display: block;
width: 180px;
padding: 10px;
color: #FFFFFF;
font-size: x-large;
font-variant: normal;
font-family: Segoe, "Segoe UI", "DejaVu Sans", "Trebuchet MS", Verdana, sans-serif;
margin: 10;
text-decoration: none;
opacity: 0.9;
border-spacing:0;

border-collapse:collapse;
text-align: center;
background-color: #000033;
/*font-weight: bold;
/*border-radius: 20px;*/
}
#menuA:hover, #menuAL:hover
{
/*color: #699;*/

background-color: #003;
/*text-shadow: 10px 0px 10px;   */
font-weight: bold;
background-image: -webkit-gradient(linear, 50.00% 0.00%, 50.00% 100.00%, color-stop( 0% , rgba(65,62,110,1.00)),color-stop( 40.94% , rgba(7,5,53,1.00)),color-stop( 49.74% , rgba(9,8,56,1.00)),color-stop( 100% , rgba(12,11,60,1.00)),color-stop( 100% , rgba(54,56,116,1.00)));
background-image: -webkit-linear-gradient(270deg,rgba(65,62,110,1.00) 0%,rgba(7,5,53,1.00) 40.94%,rgba(9,8,56,1.00) 49.74%,rgba(12,11,60,1.00) 100%,rgba(54,56,116,1.00) 100%);
background-image: linear-gradient(180deg,rgba(65,62,110,1.00) 0%,rgba(7,5,53,1.00) 40.94%,rgba(9,8,56,1.00) 49.74%,rgba(12,11,60,1.00) 100%,rgba(54,56,116,1.00) 100%);
}
#menu
{
position: absolute;
top: 126px;
left: 139px;
}

JSP 代码为:

<div name="header" id="header">
    <img id="logo" style="position:absolute; left:145px; top:10px; "src="images/logo.jpg">
        <div id="menu" >
        <ul>
            <li id="menuli"><a id="menuA" href="index.jsp#header">Home</a></li>
            <li id="menuli"><a id="menuA" href="index.jsp#services">Services</a></li>
            <li id="menuli"><a class="prod" id="menuA" href="Display?course=6">Products</a>

            </li>
            <li id="menuli"><a id="menuA" href="index.jsp#contact">Contact</a></li>
            <li id="menuli"><a id="menuA" href="index.jsp#about">About</a></li>
        </ul>
    </div>
</div>

在任何 servlet 包含它之后的所有页面都会发生这种情况。

请查看图片链接。

【问题讨论】:

    标签: java html css jsp servlets


    【解决方案1】:

    在 servlet 中打印 html 内容被认为是不好的做法。您可以在请求中设置属性。所以不是这个,

    out.print("<p style='position:absolute;top:200px;left:300px;color:#CC0066;'>Sorry username or password error! </p>");
                RequestDispatcher rd=request.getRequestDispatcher("login.jsp");
                rd.include(request, response);
    

    使用,

    request.setAttribute("message","Sorry username or password error!");
                RequestDispatcher rd=request.getRequestDispatcher("login.jsp");
                rd.include(request, response);
    

    并尝试在jsp页面中打印消息,

    只需将 scriptlet 用作 ,

    <p style='position:absolute;top:200px;left:300px;color:#CC0066;'><%=message></p>
    

    或使用 EL

    <p style='position:absolute;top:200px;left:300px;color:#CC0066;'>${message}</p>
    

    十年来,使用 scriptlet 也被认为是不好的做法。看到这个How to avoid java codes inside jsp

    希望对你有帮助!!

    【讨论】:

    • CSS 的变化是因为这段代码?这行得通吗?
    • 答案是一般的。但是,如果您按照上述方式进行操作,则可以消除该问题。我猜position:absolute 是您代码中的问题。尝试将其更改为相对
    • 使用你所说的有效。但我必须在整个项目中这样做。 bdw 你的位置是什么意思:绝对是问题?我应该用什么代替它?
    • 因为你里面没有任何东西。边距适用于 div 内的元素,而不适用于 div
    • 因为您通过 servlet 的响应向现有 html 添加了一个新段落,这导致了失真。
    【解决方案2】:

    解决了。我在导航栏的 CSS 部分中有margin:10px。删除它,问题都消失了。

    :)

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多