【问题标题】:JSP/Servlet Attribute ValidationJSP/Servlet 属性验证
【发布时间】:2011-11-20 12:09:07
【问题描述】:

有没有办法验证从 Servlet 传递到 JSP 的请求属性?

例如,在我的 Servlet 中,我会这样做:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Foo foo = new Foo();
    request.setAttribute("foo", foo);
    RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/bar.jsp);
    dispatcher.forward(request, response);
}

bar.jsp 看起来像这样:

<html>
    <body>
        ${foo.getBaz}
    </body>
</html>

在 bar.jsp 中,有没有办法确保“foo”属性是 Foo 对象?我们使用 Maven JSPC 插件来编译 JSP,在编译时捕获重构/重命名错误(例如 Foo.getBaz() 被重命名为 Foo.getFluff())会很好。

【问题讨论】:

  • 如果您使用的是 JSF、Struts、Spring MVC 等 MVC 框架,那么您可以利用现有的特定于框架的 IDE 插件,这些插件可以提供 EL 验证。例如。 JSF 的 JBoss 工具。然而,没有人想到普通的 vainlla JSP/Servlet。

标签: java jsp servlets jstl el


【解决方案1】:

查看 java 中的 instanceof 运算符。它应该可以解决您的问题。

【讨论】:

【解决方案2】:

您可以使用如下脚本:

<%
Foo foo = (Foo) request.getAttribute("foo");
String baz = foo.getBaz();
%>

然后在您的 HTML 中使用 baz 作为 &lt;%= baz %&gt;

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多