2017-04-21 12 views
0

Strutsアプリケーションでは、コントローラによってHTTPレスポンスにJavascriptコードが書き込まれます(このJSコードは、送信が終了すると実行されます)。あなたはそれが悪いアプローチだと思いますか、それとも容認できますか?属性を設定してJSコードをビューに移動する方が良いでしょうか?コントローラからHTTPレスポンスにJavascriptコードを書き込む

@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()); 
    } 
} 

答えて

2

私の意見では非常に悪い習慣です。ビジネスロジックと表現レイヤーを混在させるだけで、バックエンド開発者がJSを全く理解できない場合はどうなるでしょうか?もっと重要なことに、特に大きなプロジェクトではデバッグが難しくなります。人々は絶えず変化しており、この知識は途中で失われています。

私はAJAX呼び出しを実装し、要求完了時に(ビュー側のofcで)JSを実行します。

+0

はい、Ajaxの呼び出しで行うことができますが、多くのリファクタリングが必要です(これは古いアプリです)。 –

関連する問題