3

ajax経由でコントローラーに送信されたフォームがあります。そのコントローラーで入力が検証され、json オブジェクトが返されます。

エラーがある場合は、クライアント側で分析できるように、値が「FAIL」のjsonオブジェクトにプロパティ(文字列)を返します。

私がやろうとしているのは、ビューをレンダリングし、その json オブジェクトに文字列プロパティとして配置することです。これにより、エラー (成功) がない場合、そのレンダリングされたビューから html を使用して div を設定できます。

どうやってやるの?

それを行うより良い方法はありますか?

4

2 に答える 2

4

やったぜ!!

これが私の解決策です:

コントローラーでページをレンダリングできるように、thymeleaf を使用しました。

私はウェブ上で見つけたさまざまな情報の一部を使用しています..それらすべてを覚えているわけではないので、ここにリンクを貼らなかったことに感謝し、申し訳ありません....

まず、フォーム データを ajax 経由でコントローラーに送信します。コントローラーでオブジェクトを作成し、ステータス フィールドを FAIL の SUCCESS に設定します。失敗した場合はオブジェクトにエラー情報を設定し、成功した場合はフィールドをページ応答の html に設定します。そこで、このオブジェクトをクライアント (JSON) に送り返し、フィールドを分析します。

以下はコードです:

コントローラー:

@RequestMapping(value = "/calcdireto.json", method = RequestMethod.POST)
public @ResponseBody CalcDiretoResponse processFormAjaxJson(Model model,
    @ModelAttribute(value = "formBean") @Valid CalcDiretoFormBean cdBean,
    BindingResult result) {
CalcDiretoResponse res = new CalcDiretoResponse();
if (!result.hasErrors()) {
      res.setValStatus("SUCCESS");
      final WebContext ctx = new WebContext(request,servletContext,request.getLocale());
      res.setHtml(this.templateEngine.process("subpage", ctx));     
      return res;
}   ...

そしてページで:

if (response.valStatus == 'SUCCESS') {
   $("#pp-result").html(response.htm);
 }

それで全部です!

于 2013-09-26T11:23:49.750 に答える
1

JSP を使用している場合、Spring は JSP ページをコンパイルしていないため、Spring でビューをレンダリングすることはできません。ビューの長さにもよりますが、解決策はビューをString(JSP タグのない単純な HTML) として手作業で作成し、それを JSON として返すことです。

編集: このRender Spring MVC to String or PDF Biju Kunjummen の回答をご覧ください。

于 2013-09-23T12:59:41.427 に答える