thymeleaf调用springBean

2022-08-16 20:43:00 浏览数 (1)

没有经过战斗的舍弃,是虚伪的;没有经过苦难的超脱,是轻佻的。——傅雷

昨天写了一篇关于前端精度丢失的博客

今天发现还有个问题,如果我们需要使用thymeleafjs中使用获取的数据是一个对象

并且里面的属性还是超出16位的Long类型的话,仍然会导致精度丢失

这里我们可以直接写一个JsonManager

代码语言:javascript复制
/**
 * Json转换管理层
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/7/7 11:12
 */
public interface JsonManager {

    /**
     * 序列化处理精度丢失
     *
     * @param serializeObj 将要序列化的对象
     * @return java.lang.Object
     * @author <achao1441470436@gmail.com>
     * @since 2021/7/7 11:16
     */
    Object browserCompatible(Object serializeObj);

}

实现类

代码语言:javascript复制
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.springframework.stereotype.Service;

/**
 * Json转换管理层实现类
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/7/7 11:13
 */
@Service
public class JsonManagerImpl implements JsonManager {
    /**
     * 序列化处理精度丢失
     *
     * @param serializeObj 将要序列化的对象
     * @return java.lang.Object
     * @author <achao1441470436@gmail.com>
     * @since 2021/7/7 11:16
     */
    @Override
    public Object browserCompatible(Object serializeObj) {
        return JSON.parse(JSON.toJSONString(serializeObj, SerializerFeature.BrowserCompatible));
    }
}

然后我们可以在页面上调用

代码语言:javascript复制
<script th:inline="javascript">
    let ruben = [[${@jsonManagerImpl.browserCompatible(ruben)}]];
    console.log(ruben)
</script>

我们打开浏览器控制台查看我们替换后的结果

0 人点赞