1

フローハンドラーでフロー内(スプリングウェブフローによって作成)でAjax呼び出しを実行する際に問題が発生しました。このフローのステップ2にあり、ページに表示されるリストに新しいオブジェクトを追加するサーバー上のメソッドを呼び出したいと仮定します。このメソッド呼び出しはフローハンドラーによって実行する必要があり、更新せずにリスト全体をページに再表示し、そこに新しいオブジェクトを表示する必要があります。

簡単に言うと、フローハンドラーのメソッドを呼び出して部分的に送信したいと思います。しかし今のところ、私はそれを行うことができるのは、更新されたフォームの送信全体でのみです。

私は試しました:-Spring.remoting.submitForm(...)

  • Spring.addDecoration(new Spring.AjaxEventDecoration({...})

  • DWR道場リクエスト..。

私の環境:-Spring-webflow-2.1.1.RELEASE

  • Spring-webmvc-3.0.3.RELEASE

  • 春-3.0.3.RELEASE

  • タイル-2.2.1

  • 速度-1.6.4

誰かがこの問題を手伝ってくれることを願っています。

よろしく

マレク・ドミニアック

4

1 に答える 1

1

私はjQueryを使用してこれを正確に行っています。

タイルが定義されているメインページには、次のものがあります。

<script type="text/javascript" src="/path/to/jquery/jquery-1.4.2.min.js" />

次に、ページフラグメントを呼び出したい場所に次のように表示します。

    <script type="text/javascript"><![CDATA[
      $(document).ready(function() {

          $("#addNewFragment").click(function() {
              $.get("/app/fragments/target.page",function(data){$("#addFragmentLocation").before(data);});
          });
      });
    ]]></script>

そして、フラグメントを表示したい同じページの下部に、次のように表示されます。

<span id="addFragmentLocation" />

また、IDが「addNewFragment」の要素があるため、クリックするとjQuery関数が実行されます。

FragmentController.javaというコントローラーがあります。次の形式を取ります。

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@RequestMapping("/fragments/**")
@Controller
public class FragmentController {

// Add request mappings as you need to.
@RequestMapping(value = "/fragments/target.page", method = RequestMethod.GET)
public String getFragment(ModelMap modelMap, HttpServletRequest request, HttpServletResponse response) {
    //Add model elements as you need to.
    return "fragmentView";
}
}

最後に、views.xmlファイルに、「fragmentView」ビューを実際の.jspxページにマップするビューが宣言されています。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>

<definition name="fragmentView" template="/WEB-INF/path/to/fragments/myNewPageFragment.jspx" />

</tiles-definitions>

余談ですが、jspxページは当然XMLベースです。jQueryはXMLをHTMLベースのDOMに挿入できません。必ず次のように始めてください。

 <div xmlns:jsp="http://java.sun.com/JSP/Page" >
      <jsp:output omit-xml-declaration="yes"/>
      <jsp:directive.page contentType="text/html; charset=ISO-8859-1" />

そうしないと、不思議なJavaScriptエラーが発生します。

エラー:キャッチされない例外:[例外... "ノードを階層内の指定されたポイントに挿入できません"コード: "3" nsresult: "0x80530003(NS_ERROR_DOM_HIERARCHY_REQUEST_ERR)"場所: "http://127.0.0.1:8080 / path /to/jquery/jquery-1.4.2.min.js行:113 "]

お役に立てれば!

于 2010-10-11T16:24:25.270 に答える