2016-10-05 9 views
-1

Im実現可能性のために何かを試してみてください。Java Spring Controllerからraw HTMLをjspビューに渡すにはどうすればいいですか

私は、Springコントローラで生のHTMLコードを特定のビューに渡そうとしています。しかし、私は可能な場合は、生のHTMLを文字列に変換し、HTML文字列をビューに渡すことができるかどうかを知りたい。私は文字列にHTMLをフォーマットhaventedので、 "文字列メッセージ"のTheresエラー。

@Controller 
public class TestController { 

    @RequestMapping(value = "/test", produces = "text/html;charset=UTF-8") 
    public ModelAndView test (ModelMap model) { 
     //Map<String, Object> cat = (Map<String, Object>) incidentService.getIncidentCategories(); 

     ModelAndView mv = new ModelAndView("test2.jsp"); 
     String message = <p><img alt="alt text" src="http://localhost:8080/aston.jpg" style="height:974px; width:2386px" />This is my textarea to be replaced with CKEditor.</p> // 
     return new ModelAndView("welcome", "message", message); 

     return mv; 
    } 

} 
+0

コードにコンパイルエラーがあります。あなたはそれらを修正することはできますか? – pleft

+0

'message'文字列は、コントローラメソッドから返りたい完全なマークアップになっていますか、それとも別のテンプレートのより多くのテンプレートに挿入しますか? –

答えて

0

だから私は基本的にこの溶液に来ます。 春のコントローラでは、私はエスケープされたエスケープされたhtmlをビューに渡しています。

mv.addObject( "Description"、HtmlUtils.htmlEscape(eknow.get(0).getDescription()));

エスケープ:

はエスケープ "12345

テスト":<P>テスト12345 </P >

<P> <のimg ALT = " altテキスト" SRC = " http://localhost:8080/logo.gif&quot; style = "高さ:303px;幅:1191px "/> </P >

そしてビューで、私は隠し入力でエスケープ値を格納します。

そして私はjqueryので要素を取得し、エスケープにエスケープからアクションを逆転。

var testing = $("#test").val(); 
alert(decodeURIComponent(testing)); 
CKEDITOR.instances.description.setData(decodeURIComponent(testing)); 

これで、HTMLエディタのhtmlローコードが設定され、レンダリングされます。

これを最適化する方法がわかっている場合は、教えてください。しかし、この解決策は機能します。

+0

エスケープ:<P>テスト12345 </P > <P> <のimg ALT = " altテキスト" SRC = "にhttp:// localhost:8080/logo.gifを"スタイル= "高さ:303px;幅:1191px "/> </p > –

0

SpringコントローラからHTMLを返す方法は2つあります。

あなたがSpring.Useの最新バージョンを使用している場合、あなたはあなたが春の古いバージョン、シンプル

response.setContentType("text/html"); 
response.getWriter().println(...) // print your html here 
1

を使用している場合

@RequestMapping(value = { "/testUrl" }, method = RequestMethod.GET, 
    produces = MediaType.TEXT_HTML_VALUE) 

を@RequestMappingから属性 "を生成します" @RestControllerまたは@ResponseBodyを使用することができます。viewResolver

@RestController 
public class TestController { 

    @RequestMapping(value = "/test") 
    public String text1() { 
     return "<p>hello world</p>"; 
    } 
} 

OR

@Controller 
public class TestController { 

    @RequestMapping(value = "/test") 
    public @ResponseBody String text2() { 
     return "<p>hello world again!</p>"; 
    } 
} 
0

あなたはまた、JSPページに<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>を追加ウルメッセージ String message = "<p><img alt=\"alt text\" src=\"http://localhost:8080/aston.jpg\" style=\"height:974px; width:2386px\" />This is my textarea to be replaced with CKEditor.</p>"

に引用符をエスケープする必要が<div class="well"><c:out value="${message}" escapeXml="false"></c:out></div>

使用することができます。

jspページを使用していると仮定します。

関連する問題