java物件轉js物件
阿新 • • 發佈:2019-02-10
在js中直接使用 EL表示式表達java物件時,輸出是物件的類名。
沒有達到我們要使用該物件的目的。
比如
var user= ${user};
在頁面上查詢程式碼為
var user=com.test.domain.user;
這時候想要獲取user的屬性值: user.name是會報錯的。
我們只有把java物件轉換為js物件才能通過 user.name獲取user的屬性值。
我們一般把java物件轉化為js中的json物件。
我們這裡還是需要使用jsp中的自定義標籤。在java語言中把java物件轉化成json物件後返回給js。
如果不瞭解 jsp的自定義標籤可以參考:
我這裡直接記錄自定義標籤實現的程式碼。
cf.tld
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>custom JSTL 1.1 functions library</description> <display-name>JSTL functions</display-name> <tlib-version>1.1</tlib-version> <short-name>cf</short-name> <uri>com.data.web.view.function</uri> <function> <description>物件序列化為json字串</description> <name>toJSON</name> <function-class>com.data.util.JSON</function-class> <function-signature>java.lang.String toJSON(java.lang.Object)</function-signature> </function> </taglib>
JSON.java
package com.data.util; import java.io.IOException; import java.util.Map; import com.data.web.support.spring.web.JsonObjectMapper; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; /** * JSON 序列化和反序列化 * * */ public abstract class JSON { private static final ObjectMapper objectMapper = new JsonObjectMapper(); /** * 物件JSON序列化 * * @param object * @return * @throws JsonGenerationException * @throws JsonMappingException * @throws IOException */ public static String toJSON(Object object) { try { return objectMapper.writeValueAsString(object); } catch (Exception e) { return null; } } }
jsp中使用
頭部需要引用
<%@ taglib uri="com.data.web.view.function" prefix="cf" %>
js中使用如下:
var user=${cf:toJSON(user)};