Thymeleaf之常用功能

【转载】spring boot 前端模板 Thymeleaf语法详解【多测师_何sir】 Thymeleaf是Spring boot推荐使用的模版引擎,除此之外常见的还有Freemarker和Jsp。Jsp应该是我们最早接触的模版引擎。而Freemarker工作中也很常见(Freemarker教程)。今天我们从三个方面学习Thymeleaf的语法:有常见的TH属性,四种标准表达式用法,在SpringBoot中的应用。 Thymeleaf语法详解一、th属性二、标准表达式语法三、Thymeleaf在SpringBoot应用四、总结 一、th属性 常用th属性解读 html有的属性,Thymelea 阅读详情

1、引入Thymeleaf

<html xmlns:th="http://www.thymeleaf.org">

2、使用相对路径,以当前项目根路径为基础

<img th:src="@{/res/img/login.png}" />

3、行内用法

<div>[[ ${variable} ]]</div>

4、js中使用Thymeleaf

<script type="text/javascript" th:inline="javascript">

</script>

5、获取项目名

<script th:inline="javascript">     
    // '/ocSSO/'
    var contextPath1 = [[@{/}]];
    // '/ocSSO'
    var contextPath2 = [[ ${#httpServletRequest.getContextPath()} ]];
</script>

6、插入其他页面片段

<div th:replace="common/bar::div"></div>

7、遍历、判断、使用下标以及拼接

<div th:each="video,videoStat : ${featured}">

    <div class="main-vid" th:if="${videoStat.index} == 0"></div>
    
    <div class="sub-vid" th:if="${videoStat.index} == 2">
        <a href="single.html" th:href="'single.html?videoId=' + ${featured[4].id}"></a>
    </div>
</div>
web/java/spring boot/thymeleaf/jsp开发之分页功能实现的常用方式 web开发之分页功能实现的常用方式 本文主要写分页功能实现的常用方式,主要讲项目开发中快速使用的方式。适合那些只想快点实现技术而不用深入研究的人群。搞后端的你,哪天让你来搞前端了呢? 我主要写一些关键点和快速实现,有时候做项目要快撒。所以把一些常用的方法总结写下,后期我做起来就直接复制粘贴就好。 本文是我项目开发中总结下来的,针对那种想要快速实现功能,而不是研究原理的,那你就直接复制我的东西,运行... 阅读详情

相关推荐

Thymeleaf 入门教程

Thymeleaf 使用分享 Thymeleaf 使用分享 1. Thymeleaf简介 1.1 Thymeleaf使用背景 1.2 Thymeleaf介绍 2. SpringMVC + Thymeleaf 整合使用 2.1 Thymeleaf 添加 Maven 依赖 2.2 Thymeleaf 整合 SpringMVC 环境准备 2.2.1 在 SpringMVC 配置文件中删除原有配...

chuIllusions 的 博客 3989

thymeleaf中的/*[[@{})}]]*/语法

最近在写折腾李仁密老师个人博客的时候遇到的坑点分享一下 在写动态替换评论模块的js的时候发现load请求一直没有发送 ``` $(function () { $("#comment-container").load(/*[[@{/comments/{id}(id=${blog.id})}]]*/"comments/2"); }); ``` 于是就疯狂测试找问题,但是始终没有找到问题的重心,在测试的时候,发现 单独发送该url的时候是能够发送正常的“/comments/2",这说明 /*[[@{.

QWr122的博客 6123

【Spring Boot 3】Thymeleaf 使用详解(1)

其它面试题(springboot、mybatis、并发、java中高级面试总结等)《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

2401_83817916的博客 1309

thymeleaf使用@{/}进行跳转

<form th:action="@{/login}" method="post" onsubmit="return verify()"> 使用@{/} 获取上下文可以避免打包成war 跳转项目名丢失问题 Jsp 的老方法${pageContext.request.contextPath}=Thymeleaf 的新方式 @{} ...

weixin_43196575的博客 4379

SpringBoot中使用Thymeleaf常用功能(三):测试Thymeleaf循环取数据

搭建环境请参考文章一在index.html中新建超链接:&lt;a th:href="@{eachtest}"&gt;测试循环&lt;/a&gt;新建包com.ysh.thymeleaftest.domain,在此包下新建Dog.java,添加一些属性,并提供相应的setter和getter方法,再重写给属性赋值的构造方法以及默认的构造方法,实现Serializable接口。Dog.java:pa...

BADAO_LIUMANG_QIZHI的博客 8291

SpringBoot中使用Thymeleaf常用功能(二):测试Thymeleaf条件判断

环境搭建请先阅读文章一在一的基础上先在index.html中添加超链接&lt;a th:href="@{iftest}"&gt;测试条件判断&lt;/a&gt;在ThymeleafController.java中新增iftest: /* * 保存数据到作用范围域,用于测试Thymeleaf的条件判断 * */ @RequestMapping("/iftest") public String i...

BADAO_LIUMANG_QIZHI的博客 5060

Thymeleaf语法

th:inline 在 js 中直接获取后台返回的模型数据 <script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${paramsName}]]; </script> th:href 在项目路径为 ‘/’ 时,href 和 th:href 指向的超链接地址一样,没有区别 但在项目路径如 ‘/echoo/’ 时,href 指向的是绝对地址 localhost:8050/static/

qq_31856061的博客 1910

SpringBoot中使用Thymeleaf常用功能(一):表达式访问数据

环境搭建:    创建一个Maven项目,按照Maven项目的规范,在src/main/下新建一个名为resources的文件夹,并在下面新建static和templates文件夹。  ①  修改pom.xml:&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch...

BADAO_LIUMANG_QIZHI的博客 2653

【详解】Thymeleaf中的基本表达式:@{},#{},${},*{}

1、@{}:thymeleaf中的超链接表达式 话说例子如下: <a th:href="@{/user/login}"></a> <a th:src="@{/user/login}"/> 2、#{}:thymeleaf中的消息表达式、或者是资源表达式 一般和 th:text一起使用多一点,#{}取出来的值取代了标签中的值,#{key}对应的value。如果标签中间已经有值,#{}取出来的值会覆盖标签中的值 话说例子如下: <div th:text=

CodingLJ 1万+

springboot系列十一:Thymeleaf

springboot系列十一:Thymeleaf

你好, 我在学java的博客 1996

基于TI MSPM0的PS2双轴按键摇杆模块ADC+GPIO驱动移植实战

本文详细介绍了在TI MSPM0微控制器上驱动PS2双轴按键摇杆模块的完整实战流程。通过SysConfig图形化工具配置ADC与GPIO引脚,并编写了包含ADC采样、按键检测及数据处理的驱动代码,实现了对摇杆X/Y轴模拟量及按键数字量的稳定读取,为嵌入式控制项目提供了可直接移植的解决方案。

weixin_42465140的博客 83

Thymeleaf常用功能实战

一Pom <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache...

实践求真知 670

IEEE Transactions模板中参考文献作者缩写、期刊名缩写

本文章记录如何在IEEE Transactions的模板中,解决参考文献的作者缩写、期刊名字缩写的问题。

weixin_43981621的博客 1万+

thymeleaf常用的th标签功能介绍以及案例

标签 功能介绍 案例 th:id 替换id <input th:id="'xxx' + ${collect.id}"/> th:text 文本替换 <p th:text="${collect.description}">description</p> th:utext 支持html的文本替换 <p th:utext="${htmlcontent}">content</p> th:obj

Layman_6616的博客 2194

从JTAG到AS模式:一文搞懂EP4CE10E22C8N所有配置引脚(MSEL, nCONFIG, DATA0)的用法

本文深入解析EP4CE10E22C8N FPGA的配置引脚(MSEL, nCONFIG, DATA0)在不同模式下的使用方法,特别关注从JTAG到AS模式的切换要点。通过详细的配置模式对比、状态机分析和PCB布局建议,帮助开发者避免常见陷阱,提升FPGA配置成功率。

weixin_33713350的博客 319

madgwick算法基于MPU9250姿态融合漂移问题的原因

基于MPU9250的madgwick算法姿态漂移问题原因 0、声明 因为这个是现象是不是共性目前本人还没研究过,只是在个体问题研究的基础上得出的结论,或许我买到的MPU9250是一个盗版:),所以只具备参考性。 1、现象 使用MPU9250的加速度计、角速度计、磁力计(AK8963)原始数据输入到madgwick算法中,得到的姿态最终会在停止姿态变化后仍然漂移一小段时间。其中加速度计和角速度计读取速率为400hz,磁力计为100hz,加速度计采样范围±2g,角速度计采样范...

GreedyZombie的博客 3872

thymeleaf部分语法整理

th:switc和th:case与java中switch等效,只要其中⼀个 th:case 的值为 true就显示标签,则同⼀个 switch 语句中的其他 th:case 属性都将被视为 false即都不显示标签。)] 中的表达式就是 Thymeleaf 中内联表达式,任何在 th:text 或 th:utext 属性中使⽤的表达式都可以出现在 [[]] 或 [()] 中使用。th:each=“遍历出来的数据,遍历出来的数据的状态 : 要遍历的数据”用目标的代码替换当前标签, 不会保留页面自身的标签。

2302_80277784的博客 1953

【学习体会】Lighttools8.4.0:软件基本使用+光度学基本概念+系统初始设置

关于Lighttools8.4.0软件的安装教程,详见我的另一篇博文:【软件安装】win10下Lighttools8.4.0(64)光学系统建模软件的安装教程 在本文中,我们将学习到,光度学的基本概念、系统初始设置、物体模型坐标的使用方法、简单光学系统实例、系统浏览器的作用和内容、设置虚拟相机并渲染视图中的图像、仿真结果3D显示等。 如果有其他感兴趣的内容但是我又没有写的,欢迎在评论区留言! 光度学的基本概念 软件的基本介绍 参考博文:https://www.docin.c...

LeonJin的博客 2万+

Spring Boot 整合 Thymeleaf 模板引擎:从零开始的完整指南

本文介绍了如何在SpringBoot中使用Thymeleaf模板引擎进行Web开发。首先讲解了环境搭建和基础配置,包括创建项目、添加依赖和目录结构。然后通过一个简单示例演示了控制器和模板页面的基本用法。文章详细解析了Thymeleaf的核心语法,包括变量表达式、选择表达式、消息表达式等,并提供了条件判断、循环遍历、表单处理等常用功能的实现方法。此外,还介绍了布局模板、实用工具对象、内联表达式等高级用法,以及常见问题的解决方案。最后推荐了进一步学习的资源。Thymeleaf作为SpringBoot官方推荐的模

weixin_62938484的博客 2409

基于STM32L4XX、HAL库的ICM-42670-P姿态传感器驱动程序设计

sprintf(buffer, "温度: %.1f °C\r\n\r\n", sensor_data.temperature);sprintf(buffer, "陀螺仪: X=%.2f Y=%.2f Z=%.2f rad/s\r\n",sprintf(buffer, "加速度: X=%.2f Y=%.2f Z=%.2f m/s²\r\n",sprintf(buffer, "开始校准IMU,请保持传感器静止...\r\n");sprintf(buffer, "读取传感器数据失败\r\n");

zhusl6688的博客 639

运营商拼命封杀的PCDN到底是个啥?

最近一段时间,很多宽带用户发现自家的网速莫名其妙变慢了,甚至收到了运营商发来的“违规使用宽带”警告短信,严重的甚至直接被断网。很多人一头雾水:我交了钱办的宽带,自己买的插件或者京东云、网心云这些硬件赚点“电费”,怎么就成了运营商眼中的“过街老鼠”?今天,我们就把这层窗户纸捅破,深度剖析这个让互联网大厂省下几十亿、让运营商恨得牙痒痒、让用户夹在中间进退两难的技术黑话——。

网络技术联盟站 916

thymeleaf常用标签 thymeleaf:字符串Strings常见的使用方法

判断是不是为空:null:  &lt;span th:if="${name} != null"&gt;不为空&lt;/span&gt; &lt;span th:if="${name1} == null"&gt;为空&lt;/span&gt;  判断是不是为空字符串: “” &lt;span th:if="${#strings.isEmpty(name1)}"&gt;

hepei120的专栏 2万+

第五章 TTM 后备管理:5.6系统内存域

系统内存域由 TTM 内置资源管理器管理,通过 ttm_tt 承载页信息,依赖 ttm_pool 提供物理页。ttm_tt 管理页数组、缓存属性与状态标志,支持外部页与换出机制。初始化分 ttm_tt_init 与 ttm_sg_tt_init,生命周期包括创建、填充、释放与销毁。页池针对 write-combined、uncached 及一致性 DMA 分配的页进行缓存,提升性能并减少 TLB 刷新。分配时高阶优先、批量设置缓存属性,回收时清零后归还池中,确保高效复用。

图形/计算GPU的驱动与虚拟化技术分享园地 2560

Thymeleaf使用

本文只适用于不会Java对HTML语言有基础的程序员们,是浏览了各大博客后收集整理,重新编辑的一篇文章,希望能对大家有所帮助。最后本文如果有哪里写错的,希望各位大神们能够批评指正,谢谢大家!   对于Thymeleaf,网上特别官方的解释无非就是:网站或者独立应用程序的新式的服务端java模板引擎,可以执行HTML,XML,JavaScript,CSS甚至纯文本模板。这个解释没有任何问题,它确实是建立在Java的基础之上的,但是像我这种只会前端不懂Java的人,其实也可以运用它。了解angular的人在看

FurtherSkyQ的博客 1699

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

thymeleaf常用标签解析

Thymeleaf常用th标签 关键字功能介绍案例 th:id 替换id <input th:id="'xxx' + ${collect.id}"/> th:text 文本替换 <p th:text="${collect.description}">description</p> th:utext 支持html的文本替换 <p th:utext="${htmlcontent}">content</p&gt...

qq_44098792的博客 618

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

springboot之thymeleaf的引入和语法

1,引入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <properties> <...

dzz_bc的博客 336

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: Linux安装RabbitMQ
下一篇: 使用Red5+OBS+videojs实现网络直播效果
章 鱼
博客等级 码龄10年 203粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值