【问题标题】:Reference controller variable in HTML page在 HTML 页面中引用控制器变量
【发布时间】:2012-01-17 04:30:52
【问题描述】:

我的 Java servlet 应用程序的 WEB-INF 目录中有许多视图文件(扩展名为 .HTML)。我希望能够从视图中引用控制器中定义的变量。

控制器:

String email_address = ...

查看:

<INPUT type='text' name='email' value='<%= email_address %>'/>

很遗憾, 语法无效。

正确的语法是什么?

** 编辑 **

如果有什么不同,我将通过以下方式引用 HTML:

request.getRequestDispatcher("/WEB-INF/form_auth.html").forward(request, response);

【问题讨论】:

    标签: java model-view-controller servlets view controller


    【解决方案1】:

    没有语法;不存在这样的功能。

    为了在 JSP 中引用它,您需要将一个对象放入作用域。在您的情况下,如果您想引用 HTML 文件中的动态属性,则需要通过 JSP 处理器(或其他模板机制)运行 HTML 文件。

    或者,您可以通过 servlet 机制映射 .html URL,并使用 JSP(或其他模板)作为 .html URL 的实际实现。

    现在这不是通过 scriptlet 完成的(&lt;%= %&gt; 语法)。这应该使用普通的 JSP EL(${ } 语法)和作用域属性(通常是请求作用域)来完成。

    例如,您可以公开一个变量:

    // Java:
    // Java conventions would name this "emailAddress", not "email_address".
    request.setAttribute("emailAddress", emailAddress);
    
    <%-- JSP --%>
    ${emailAddress}
    

    或者创建一个完整的 DTO 对象:

    // Java
    dto.emailAddress = "the@email.address";
    request.setAttribute("dto", dto);
    
    <%-- JSP --%>
    ${dto.emailAddress}
    

    【讨论】:

    • @lwburk 很难说;如果它们真的是 .html 文件,并且未被容器处理,那么它肯定不会像 OP 希望的那样工作。
    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2014-01-20
    相关资源
    最近更新 更多