
[英]What's the best practice for manipulating API response from Java using JavaScript?
[英]What is the best practice to manage dynamic JavaScript from Java?
我正在用JSP开发一个网页,该网页使用了大量来自Java后端类的动态生成的JavaScript代码。 它涉及Google Maps和一个称为MarkerClusterer的JS库。
当前,此类通过在Java中处理String并将其直接打印到JSP页面中来生成JavaScript代码,但是在Java String中编写JS并对其进行维护变得有些复杂。
JavaScript一直需要大量修改,因为此类已在不同的项目中使用。 理想情况下,我希望将其打包成可以用作库的方式,而不需要进一步修改,所以这是问题所在,什么是最好的方式?
这是代码的一部分:
public class JavascriptGenerator {
public String gerarPorRegiao(String contextPath, List<Endereco> lista, boolean infoWindowEnabled) {
String saida = "";
saida += "<script type=\"text/javascript\" src=\"http://maps.google.com/maps/api/js?sensor=false\"></script>"
+ "<script type=\"text/javascript\" src=\""
+ contextPath
+ "/js/markerclusterer.js\"></script>"
+ "<script type=\"text/javascript\">"
+ "var map;";
for(Estado e: Estado.values()) {
saida += "var mc" + e.toString() + ";";
}
saida += "var selecionado;"
+ "var center = new google.maps.LatLng(-11.0, -51.9);"
+ "var geocoder = new google.maps.Geocoder();"
+ "var infowindow = new google.maps.InfoWindow();"
+ "var markerContent = new Array();"
+ "function geocoderInit() {"
...
我会说:不。
不要动态生成JavaScript。 这将是一场噩梦。 将您的js保留在静态文件中,并使用ajax来获取数据。 您的数据可以采用JSON的形式。 JSON可以使用您可以下载的许多JSON库之一从对象层次结构自动生成。
您可以做的一件事是,使用字符串缓冲区,然后将所有Java脚本内容添加到其中。 然后将其写入扩展名为.js的文件。 因此,这使您的脚本可维护
您可以编写一个单独的JSP文件来创建javascript。 然后,JavaScript的所有静态部分将照常:
var map;
<% for(Estado e: Eastado.values()) { %>
var mc<%=e.toString()%>;
<% } %>
var selecionado;
...
然后可以由其他JSP创建的HTML页面加载此JSP:
<script type="text/JavaScript" src="path/to/jsp/file.jsp"></script>
如果您的脚本需要访问数据,则可以通过URL传递参数:
<script type="text/JavaScript" src="path/to/jsp/file.jsp?id=15"></script>
然后,在脚本,过滤器或类似工具中,您可以直接使用这些参数,也可以使用它们从数据库中加载数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.