1. 程式人生 > >java物件轉js物件

java物件轉js物件

在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)};