0

所有,我在 servlet 中设置了一个属性变量。并想在jsp中得到它。但我对此有一些疑问。假设你有代码。

在小服务程序中。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("BeerSelected", "BlackBeer");
        RequestDispatcher disp=request.getRequestDispatcher("SelectResult.jsp");
        disp.forward(request,response);
    }

在 JSP 中

此代码有效

<%String name = (String)request.getAttribute("BeerSelected");%>
<%= name%>

但是为什么下面的代码不起作用?jsp 不呈现值。

<%request.getAttribute("BeerSelected");%>

下面的代码也没有。

<%request.getAttribute("BeerSelected").toString();%>

我不知道为什么toString()不起作用。谢谢。

4

1 回答 1

4

因为要将某些内容发送给响应作者,您必须使用<%= ... %>,或明确写给作者:

<% out.println(request.getAttribute("BeerSelected")); %>

您的代码等效于以下 Java 代码:

request.getAttribute("BeerSelected");

所以这会调用该方法,但不会对其返回的内容做任何事情。

也就是说,您应该完全忘记 scriptlet,它不应该被使用多年。使用JSP ELJSTL显示(并正确转义)您的值:

<c:out value="${BeerSelected}" />

此外,按照惯例,属性的拼写类似于 Java 变量:beerSelected而不是BeerSelected.

于 2013-08-18T12:41:04.870 回答