java - 将 Javascript 代码写入来自 Controller 的 HTTP 响应

标签 java jsp struts-1

在 Struts 应用程序中,一些 Controller 将 Javascript 代码写入 HTTP 响应(此 JS 代码将在提交结束时执行)。您认为这是一个不好的方法还是可以接受的?设置一个属性并将 JS 代码移动到 View 中会更好吗?

@UserInterfaceEvent
public void aceptar_onClick(FormActionContext ctx) {

    IGenerateDocListOutputBF bproxy = ProxyFactory.newBusinessProxy(getBusinessComponent(), IGenerateDocListOutputBF.class);

    GenerateDocListOutputForm form = (GenerateDocListOutputForm) ctx.form();
    String mode = form.getDetailMode();
    removeErrors(ctx);

    GemaBrowseControl browse = (GemaBrowseControl) ctx.session().getAttribute("outputs");
    SelectedData data = browse.getAllSelectedData(ctx, true);

    try {
        bproxy.generateOutputs(data.getSelectedDboids(), form.getDboid(), false);
        if (GemaAppErrorMgr.currentScopeHasErrors()) {
            ctx.request().setAttribute(DetailRequest.MODE, mode);
            showErrorPopUp(ctx);
        } else {
            String javascript = "<script>window.opener.refreshDivDocsRelated(); window.close();</script>";          
            ctx.response().getOutputStream().print(javascript);
            ctx.forwardToResponse();
        }
    } catch (Exception e) {
        handleException(e, ctx.request());
    }
}

最佳答案

我认为这是非常糟糕的做法。混合业务逻辑和表示层不仅会使其更难理解(如果后端开发人员根本不懂 JS 怎么办?),更重要的是,它会让调试变得更困难,尤其是在大型项目中人们在不断变化,而这些知识会在过程中丢失。

我将实现一个 AJAX 调用并在请求完成时执行该 JS(在 c 的 View 端)。

关于java - 将 Javascript 代码写入来自 Controller 的 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544590/

相关文章:

java - JPA:数据库生成的列

java - Robolectric 2.0 和 RoboGuice 2.0 集成

java - 使用 c :out tag 访问 session 中 1 个 java bean 的属性

html - 如何使用 <img src =""> 在 JSP 的系统目录中显示图像

jsp - 带有 Tomcat 的 Intellij IDEA HotSwap 适用于类,但不适用于 JSP

tags - 如何在struts 1 html标签中的textarea上使用maxlength

java - 如何制定 Bresenham 线算法?

java - Unresolved 依赖关系 NetCDF-Java 库

Java 类通常自行编译,但通过 JSP 运行时会抛出 NoClassFoundException 或 NoClassDefFoundError

java - Struts 1 上的操作调用之前确认对话框