2014-11-05 33 views
0

我正在創建一個任何網站都可以嵌入並顯示的插件,與Disqus類似。我已經有了一個非常好的主意並且瞭解它在客戶端的工作方式,這要感謝這篇文章:How to make a javascript like Disqus or IntenseDebateJava Spring return Javascript

所以我打算在客戶端使用的代碼與Disqus或谷歌分析類似:

<script type="text/javascript"> 

     var user_id = 'anbmDj3ish43'; 

     (function() { 
      var plug = document.createElement('script'); plug.type = 'text/javascript'; plug.async = true; 
      plug.src = 'http://www.example.com/user/' + user_id; 
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(plug); 
     })(); 
</script> 

對於網站的插件顯示的將是不同的每一頁,所以我需要改變返回到頁面的JavaScript代碼內容(即必須更改注入的代碼,插件的設計等)。 由於應用程序的其餘部分使用這些技術,因此我使用JAVA和Spring框架作爲後端。

所以我的問題如下: 在我的彈簧控制器裏面,我需要做些什麼才能返回一個瀏覽器可以理解的javascript?或者,我也可能走錯了路,必須以不同的方式處理它?

下面是我第一次的猜測之一,但它發回text/plain的,它不是由瀏覽器的JavaScript理解..

@Controller 
@RequestMapping(value = {"/user/"}) 
public class EmbedJavascriptController extends AbstractController{ 

    @Autowired 
    private Service service; 

    @Transactional 
    @RequestMapping(value = "/{userId}", method = RequestMethod.GET, produces="text/javascript; charset=utf-8") 
    public String home(HttpServletRequest request,HttpSession session, 
     @PathVariable("userId") String userId) throws Exception { 

     return "console.log('I wanna load some scripts');"; 
    } 
} 

任何幫助,將不勝感激:d

+0

一般來說,'script'標記將會在你的HTML模板中,並且你會在'Model'中提供你需要的任何參數。 – chrylis 2014-11-05 06:38:59

回答

1

我有同樣的問題,並解決它使用這種技術。

您可以退回ModelAndView,使用InternalResourceViewResolver解析爲JSP。您的JSP可能包含您想要返回的所有javascript內容。將此行添加到該頂部JSP

<%@ page language="java" contentType="application/javascript; charset=UTF-8" pageEncoding="UTF-8"%>