VTL-Velocity Template Language:

VTL意味着提供最简单、最容易并且最整洁的方式合并页面动态内容。 
VTL使用references来在web site内嵌套动态内容,一个变量就是一种类型的reference。变量是某种类型的refreence,它可以指向java代码中的定义,或者从当前页面内定义的VTL statement得到值。

下面是一个VTL statement的例子,它可以被嵌套到HTML代码中: 
#set ( $a = “Velocity” ) 
和所有的VTL statement一样,这个statement以#字符开始并且包含一个directive:set。当一个在线用户请求你的页面时,Velocity Templating Engine将查询整个页面以便发现所有#字符,然后确定哪些是VTL statement,哪些不需要VTL做任何事情。 
#字符后紧跟一个directive:set时,这个set directive使用一个表达式(使用括号封闭)――一个方程式分配一个值给变量。变量被列在左边,而它的值被列在右边,最后他们之间使用=号分割。 
在上面的例子中,变量是$a,而它的值是Velocity。和其他的references一样以$字符开始,而值总是以双引号封闭。Velocity中仅有String可以被赋值给变量。 
记住以下的规则: 
使用$字符开始的references用于得到什么;使用#字符开始的directives用于做些什么。 

一旦某个变量被分配了一个值,那么你就可以在HTML文件的任何地方引用它。在下面的例子中,一个值被分配给$foo变量,并在其后被引用。 
<html> 
<body> 
#set ( $foo = “Velocity” ) 
Hello $foo World! 
</body> 
</html> 
上面的实现结果是在页面上打印“Hello Velocity World!” 
为了使包含VTL directives的statement更具有可读性,我们鼓励你在新行开始每个VTL statement,尽管你不是必须这么作。Set directive将在后面详细描述。


注释


单行注释: 
## This is a single line comment.


多行注释: 
#* 
Thus begins a multi-line comment. Online visitors won’t 
see this text because the Velocity Templating Engine will 
ignore it. 
*#


文档格式: 
#** 
This is a VTL comment block and 
may be used to store such information 
as the document author and versioning 
information: 
@version 5 
@author 
*# 

References


在VTL中有三种类型的references:变量(variables)、属性(properties)、方法(methods)。作为一个使用VTL的页面设计者,你和你的工程师必须就references的名称达成共识,以便你可以在你的template中使用它们。 
Everything coming to and from a reference被作为一个String对象处理。如果有一个对象$foo是一个Integer对象,那么Velocity将调用它的toString()方法将这个对象转型为String类型。


变量 
格式要求同java。


属性 
例子: 
$customer.Address 
$purchase.Total


$customer.Address有两种含义。它可以表示:查找hashtable对象customer中以Address为关键字的值;也可以表示调用customer对象的getAddress()方法。当你的页面被请求时,Velocity将确定以上两种方式选用那种,然后返回适当的值。


方法 
一个方法就是被定义在java中的一段代码,并且它有完成某些有用工作的能力,例如一个执行计算和判断条件是否成立、满足等。方法是一个由$开始并跟随VTL标识符组成的References,一般还包括一个VTL方法体。例如: 
$customer.getAddress() 
$purchase.getTotal() 
$page.setTitle( “My Home Page” ) 
$person.setAttributes( [“Strange”, “Weird”, “Excited”] )


前两个例子$customer.getAddress()和$purchase.getTotal()看起来挺像上面的属性$customer.Address 和 $purchase.Total。如果你觉得他们之间有某种联系的话,那你是正确的。 
VTL属性可以作为VTL方法的缩写。$customer.Address属性和使用$customer.getAddress()方法具有相同的效果。如果可能的话,使用属性的方式是比较合理的。属性和方法的不同点在于你能够给一个方法指定一个参数列表。


正式reference标记 
reference的正式格式如下: 
${mudSlinger} 变量 
${customer.Address} 属性 
${purchase.getTotal()} 方法 
非正式格式更见常用,但是有时还是使用正式格式比较适合。例如:你希望通过一个变量$vice来动态的组织一个字符串。 
Jack is a $vicemaniac. 
本来变量是$vice现在却变成了$vicemaniac,这样Veloctiy就不知道您到底要什么了。所以,应该使用正式格式书写 
Jack is a ${vice}maniac 
现在Velocity知道变量是$vice而不是$vicemaniac。


Quiet reference notation 
例如: 
<input type=”text” name=”email” value=”$email” /> 
当页面的form被初始加载时,变量$email还没有值,这时你肯定是希望它能够显示一个blank text来代替输出”$email”这样的字段。那么使用quiet reference notation就比较合适。 
<input type=”text” name=”email” value=”$!email”/> 
这样文本框的初始值就不会是email而是空值了。 
正式和quiet格式的reference notation也可一同使用,像下面这样: 
<input type=”text” name=”email” value=”$!{email}”/>


Getting literal 
Velocity使用特殊字符$和#来帮助它工作,所以如果要在template里使用这些特殊字符要格外小心。本节将讨论$字符。


货币字符 
在VTL中使用$2.5这样的货币标识是没有问题的,VTL不会将它错认为是一个reference,因为VTL中的reference总是以一个大写或者小写的字母开始。


Escaping valid VTL reference 
VTL中使用“\”作为逃逸符。 
例如: 
#set( $email = “foo” ) 
$email 
\$email 
\\$email 
\\\$email 
将render为: 
foo 
$email 
\foo 
\\$email 
如果email变量没有被定义则 
$email 
\$email 
\\$email 
\\\$email 
将被render为: 
$email 
\$email 
\\$email 
\\\$email 
注意:VTL中未被定义的变量将被认为是一个字符串,所以以下例子: 
#set( $foo = “gibbous” ) 
$moon = $foo 
的输出结果是: 
$moon = gibbous


Case substitution 
现在你已经对reference比较熟悉了,你可以将他们高效的应用于你的template了。Velocity利用了很多java规范以方便了设计人员的使用。例如: 
$foo 
$foo.getBar() 
## is the same as 
$foo.Bar 

$data.getUser(“jon”) 
## is the same as 
$data.User(“jon”) 

$data.getRequest().getServerName() 
# is the same as 
$data.Request.ServerName 
## is the same as 
${data.Request.ServerName} 
但是,注意VTL中不会将reference解释为对象的实例变量。例如:$foo.Name将被解释为Foo对象的getName()方法,而不是Foo对象的Name实例变量。


Directives 
Reference允许设计者使用动态的内容,而directive使得你可以应用java代码来控制你的显示逻辑,从而达到你所期望的显示效果。


#set 
#set directive被用于设置一个reference的值。例如: 
#set ( $primate = “monkey” ) 
#set ( $customer.Behavior = $primate ) 
赋值左侧的(LHS)必须是一个变量或者属性reference。右侧(RHS)可以是以下类型中一种: 
变量reference 
String literal 
属性reference 
方法reference 
number literal 
ArrayList


下面是应用各种类型的RHS的例子: 
#set ( $monkey = $bill ) ##变量reference 
#set ( $monkey.Friend = “monica” ) ##String literal 
#set ( $monkey.Blame = $whitehouse.Leak )##属性reference 
#set ( $monkey.Plan = $spindoctor.weave($web) )##方法reference 
#set ( $monkey.Number = 123 )##Number literal 
#set ( $monkey.Say = [“Not”, $my, “fault”] )##ArrayList 
注意:最后一个例子的取值方法为:$monkey.Say.get(0)


RHS也可以是一个简单的算术表达式: 
#set ( $value = $foo + 1 ) 
#set ( $value = $bar -1 ) 
#set ( $value = $foo * $bar ) 
#set ( $value = $foo / $bar ) 
如果你的RHS是一个null,VTL的处理将比较特殊:它将指向一个已经存在的reference,这对初学者来讲可能是比较费解的。例如: 
#set ( $resut = $query.criteria(“name”) ) 
The result of the first query is $result 

#set ( $resut = $query.criteria(“address”) ) 
The result of the second query is $result 
如果$query.criteria(“name”)返回一个“bill”,而$query.criteria(“address”)返回的是null,则显示的结果如下: 
The result of the first query is bill 
The result of the first query is bill 
看看下面的例子: 
#set( $criteria = ["name", "address"] ) 
#foreach( $criterion in $criteria ) 
#set( $result = $query.criteria($criterion) ) 
#if( $result ) 
Query was successful 
#end 
#end 
在上面的例子中,程序将不能智能地根据$result的值决定查询是否成功。在$result被#set后(added to the context),它不能被设置回null(removed from the context)。打印的结果将显示两次查询结果都成功了,但是实际上有一个查询是失败的。 
为了解决以上问题我们可以通过预先定义的方式: 
#set( $criteria = [“name”, “address”] ) 
#foreach( $criterion in $criteria ) 
#set( $result = false ) 
#set( $result = $query.criteria( $criterion ) ) 
#if( $result ) 
Query was successful 
#end 
#end


String Literals 
当你使用#set directive,String literal封闭在一对双引号内。 
#set ( $directoryRoot = “www” ) 
#set ( $templateName = “index.vm” ) 
#set ( $template = “$directoryRoot/$tempateName” ) 
$template 
上面这段代码的输出结果为:www/index.vm 
但是,当string literal被封装在单引号内时,它将不被解析: 
#set ( $foo = “bar” ) 
$foo 
#set ( $blargh = ‘$foo’ ) 
结果: 
bar 
$foo 
上面这个特性可以通过修改Velocity.properties文件的stringliterals.interpolate = false的值来改变上面的特性是否有效。


条件语句 if/elseif/else 
当一个web页面被生成时使用Velocity的#if directrive,如果条件成立的话可以在页面内嵌入文字。例如: 
#if ( $foo ) 
<strong>Velocity!</strong> 
#end 
上例中的条件语句将在以下两种条件下成立: 
l $foo是一个boolean型的变量,且它的值为true 
l $foo变量的值不为null 
这里需要注意一点:Velocity context仅仅能够包含对象,所以当我们说“boolean”时,实际上代表的是一个Boolean对象。即便某个方法返回的是一个boolean值,Velocity也会利用内省机制将它转换为一个Boolean的相同值。 
如果条件成立,那么#if和#end之间的内容将被显示。 
#elseif和#else元素可以同#if一同使用。例如: 
#if( $foo < 10 ) 
<strong> Go North </strong> 
#elseif( $foo == 10 ) 
<strong> Go East </strong> 
#elseif( $foo == 6 ) 
<strong> Go South </strong> 
#else 
<strong> Go West </strong> 
#end 
注意这里的Velocity的数字是作为Integer来比较的――其他类型的对象将使得条件为false,但是与java不同它使用“==”来比较两个值,而且Velocity要求等号两边的值类型相同。


关系、逻辑运算符 
Velocity中使用等号操作符判断两个变量的关系。例如: 
#set ( $foo = “deoxyribonucleic acid” ) 
#set ( $bar = “ribonucleic acid” ) 
#if ( $foo ==$foo ) 
In this case it’s clear they aren’t equivalent.So… 
#else 
They are not equivalent and this will be the output. 
#end 

Velocity有AND、OR和NOT逻辑运算符。下面是一些例子: 
## logical AND 
#if( $foo && $bar ) 
<strong> This AND that </strong> 
#end 

## logical OR 
#if ( $foo || $bar ) 
<strong>This OR That </strong> 
#end 

##logical NOT 
#if ( !$foo ) 
<strong> NOT that </strong> 
#end


Foreach循环 
例子: 
<ul> 
#foreach ( $product in $allProducts ) 
<li> $product </li> 
#end 
</ul> 
每次循环$allProducts中的一个值都会赋给$product变量。 
$allProducts可以是一个Vector、Hashtable或者Array。分配给$product的值是一个java对象,并且可以通过变量被引用。例如:如果$product是一个java的Product类,并且这个产品的名字可以通过调用他的getName()方法得到。 
现在我们假设$allProducts是一个Hashtable,如果你希望得到它的key应该像下面这样: 
<ul> 
#foreach ( $key in $allProducts.keySet() ) 
<li>Key: $key -> Value: $allProducts.get($key) </li> 
#end 
</ul> 

Velocity还特别提供了得到循环次数的方法,以便你可以像下面这样作: 
<table> 
#foreach ( $customer in $customerList ) 
<tr><td>$velocityCount</td><td>$customer.Name</td></tr> 
#end 
</table> 
$velocityCount变量的名字是Velocity默认的名字,你也可以通过修改velocity.properties文件来改变它。默认情况下,计数从“1”开始,但是你可以在velocity.properties设置它是从“1”还是从“0”开始。下面就是文件中的配置: 
# Default name of loop counter 
# variable reference 
directive.foreach.counter.name = velocityCount 

# Default starting value of the loop 
# counter variable reference 
directive.foreach.counter.initial.value = 1 

include 
#include script element允许模板设计者引入本地文件。被引入文件的内容将不会通过模板引擎被render。为了安全的原因,被引入的本地文件只能在TEMPLATE_ROOT目录下。 
#inclued ( “one.txt” ) 
如果您需要引入多个文件,可以用逗号分隔就行: 
#include ( “one.gif”, “two.txt”, “three.htm” ) 
在括号内可以是文件名,但是更多的时候是使用变量的: 
#inclue ( “greetings.txt”, $seasonalstock ) 

parse 
#parse script element允许模板设计者一个包含VTL的本地文件。Velocity将解析其中的VTL并render模板。 
#parse( “me.vm” ) 
就像#include,#parse接受一个变量而不是一个模板。任何由#parse指向的模板都必须包含在TEMPLATE_ROOT目录下。与#include不同的是,#parse只能指定单个对象。 
你可以通过修改velocity.properties文件的parse_direcive.maxdepth的值来控制一个template可以包含的最多#parse的个数――默认值是10。#parse是可以递归调用的,例如:如果dofoo.vm包含如下行: 
Count down. 
#set ( $count = 8 ) 
#parse ( “parsefoo.vm” ) 
All done with dofoo.vm! 
那么在parsefoo.vm模板中,你可以包含如下VTL: 
$count 
#set ( $count = $count – 1 ) 
#if ( $count > 0 ) 
#parse( “parsefoo.vm” ) 
#else 
All done with parsefoo.vm! 
#end 
的显示结果为: 
Count down. 









All done with parsefoo.vm! 
All done with dofoo.vm! 

Stop 
#stop script element允许模板设计者停止执行模板引擎并返回。把它应用于debug是很有帮助的。 
#stop 

Velocimacros 
#macro script element允许模板设计者定义一段可重用的VTL template。例如: 
#macro ( d ) 
<tr><td></td></tr> 
#end 
在上面的例子中Velocimacro被定义为d,然后你就可以在任何VTL directive中以如下方式调用它: 
#d() 
当你的template被调用时,Velocity将用<tr><td></td></tr>替换为#d()。 
每个Velocimacro可以拥有任意数量的参数――甚至0个参数,虽然定义时可以随意设置参数数量,但是调用这个Velocimacro时必须指定正确的参数。下面是一个拥有两个参数的Velocimacro,一个参数是color另一个参数是array: 
#macro ( tablerows $color $somelist ) 
#foreach ( $something in $somelist ) 
<tr><td bgcolor=$color>$something</td</tr> 
#end 
#end 
调用#tablerows Velocimacro: 
#set ( $greatlakes = [ “Superior”, “Michigan”, “Huron”, “Erie”, “Ontario” ] ) 
#set ( $color = “blue” ) 
<table> 
#tablerows( $color $greatlakes ) 
</table> 
经过以上的调用将产生如下的显示结果: 
<table> 
<tr><td bgcolor=” blue”> Superior </td></tr> 
<tr><td bgcolor=” blue”> Michigan </td></tr> 
<tr><td bgcolor=” blue”> Huron </td></tr> 
<tr><td bgcolor=” blue”> Erie </td></tr> 
<tr><td bgcolor=” blue”> Ontario </td></tr> 
</table> 
Velocimacros可以在Velocity模板内实现行内定义(inline),也就意味着同一个web site内的其他Velocity模板不可以获得Velocimacros的定义。定义一个可以被所有模板共享的Velocimacro显然是有很多好处的:它减少了在一大堆模板中重复定义的数量、节省了工作时间、减少了出错的几率、保证了单点修改。 
上面定义的#tablerows( $color $list )Velocimacro被定义在一个Velocimacros模板库(在velocity.properties中定义)里,所以这个macro可以在任何规范的模板中被调用。它可以被多次应用并且可以应用于不同的目的。例如下面的调用: 
#set ( $parts = [ “volva”, “stipe”, “annulus”, “gills”, “pileus” ] ) 
#set ( $cellbgcol = “#CC00FF” ) 
<table> 
#tablerows( $cellbgcol $parts ) 
</table> 
上面VTL将产生如下的输出: 
<table> 
<tr><td bgcolor=”#CC00FF”> volva </td</tr> 
<tr><td bgcolor=”#CC00FF”> stipe </td</tr> 
<tr><td bgcolor=”#CC00FF”> annulus </td</tr> 
<tr><td bgcolor=”#CC00FF”> gills </td</tr> 
<tr><td bgcolor=”#CC00FF”> pileus </td</tr> 
</table>


Velocimacro arguments 
Velocimacro可以使用以下任何元素作为参数: 
l Reference:任何以$开头的reference 
l String literal: 
l Number literal: 
l IntegerRange:[1….3]或者[$foo….$bar] 
l 对象数组:[“a”,”b”,”c”] 
l boolean值:true、false 
当将一个reference作为参数传递给Velocimacro时,请注意reference作为参数时是以名字的形式传递的。这就意味着参数的值在每次Velocimacro内执行时才会被产生。这个特性使得你可以将一个方法调用作为参数传递给Velocimacro,而每次Velocimacro执行时都是通过这个方法调用产生不同的值来执行的。例如: 
#macro ( callme $a ) 
$a $a $a 
#end 
#callme( $foo.bar() ) 
执行的结果是:reference $foo的bar()方法被执行了三次。 
如果你不需要这样的特性可以通过以下方法: 
#set ( $myval = $foo.bar() ) 
#callme ( $myval ) 

Velocimacro properties 
Velocity.properties文件中的某几行能够使Velocimacros的实现更加灵活。注意更多的内容可以看Developer Guide。 
Velocity.properties文件中的velocimacro.libraary:一个以逗号分隔的模板库列表。默认情况下,velocity查找唯一的一个库:VM_global_library.vm。你可以通过配置这个属性来指定自己的模板库。 
Velocity.properties文件中的velocimacro.permissions.allow.inline属性:有两个可选的值true或者false,通过它可以确定Velocimacros是否可以被定义在regular template内。默认值是ture――允许设计者在他们自己的模板中定义Velocimacros。 
Velocity.properties文件中的 
velocimacro.permissions.allow.inline.replace.global属性有两个可选值true和false,这个属性允许使用者确定inline的Velocimacro定义是否可以替代全局Velocimacro定义(比如在velocimacro.library属性中指定的文件内定义的Velocimacro)。默认情况下,此值为false。这样就阻止本地Velocimacro定义覆盖全局定义。 
Velocity.properties文件中的 
velocimacro.permissions.allow.inline.local.scale属性也是有true和false两个可选值,默认是false。它的作用是用于确定你inline定义的Velocimacros是否仅仅在被定义的template内可见。换句话说,如果这个属性设置为true,一个inline定义的Velocimacros只能在定义它的template内使用。你可以使用此设置实现一个奇妙的VM敲门:a template can define a private implementationof the second VM that will be called by the first VM when invoked by that template. All other templates are unaffected。 
Velocity.properties文件中的velocimacro.context.localscope属性有true和false两个可选值,默认值为false。当设置为true时,任何在Velocimacro内通过#set()对context的修改被认为是针对此velocimacro的本地设置,而不会永久的影响内容。 
Velocity.properties文件中的velocimacro.library.autoreload属性控制Velocimacro库的自动加载。默认是false。当设置为ture时,对于一个Velocimacro的调用将自动检查原始库是否发生了变化,如果变化将重新加载它。这个属性使得你可以不用重新启动servlet容器而达到重新加载的效果,就像你使用regular模板一样。这个属性可以使用的前提就是resource loader缓存是off状态(file.resource.loader.cache =false)。注意这个属性实际上是针对开发而非产品的。


Velocimacro Trivia 
Velocimacro必须被定义在他们被使用之前。也就是说,你的#macro()声明应该出现在使用Velocimacros之前。 
特别要注意的是,如果你试图#parse()一个包含#macro()的模板。因为#parse()发生在运行期,但是解析器在parsetiem决定一个看似VM元素的元素是否是一个VM元素,这样#parse()-ing一组VM声明将不按照预期的样子工作。为了得到预期的结果,只需要你简单的使用velocimacro.library使得Velocity在启动时加载你的VMs。


Escaping VTL directives 
VTL directives can be escaped with “\”号,使用方式跟VTL的reference使用逃逸符的格式差不多。 
## #include( “a.txt” ) renders as <ontents of a.txt>(注释行) 
#include( “a.txt” ) 

## \#include( “a.txt” ) renders as \#include( “a.txt” ) 
\#include( “a.txt” ) 

## \\#include ( “a.txt” ) renders as \<contents of a.txt> 
\\#include( “a.txt” ) 
在对在一个directive内包含多个script元素的VTL directives使用逃逸符时要特别小心(比如在一个if-else-end statement内)。下面是VTL的if-statement的典型应用: 
#if ( $jazz ) 
Vyacheslav Ganelin 
#end 
如果$jazz是ture,输出将是: 
Vyacheslav Ganelin 
如果$jazz是false,将没有输出。使用逃逸符将改变输出。考虑一下下面的情况: 
\#if ( $jazz ) 
Vyacheslav Ganelin 
\#end 
现在无论$jazz是true还是false,输出结果都是: 
#if ( $jazz ) 
Vyacheslav Ganelin 
#end 
事实上,由于你使用了逃逸符,$jazz根本就没有被解析为boolean型值。在逃逸符前使用逃逸符是合法的,例如:
\\#if ( $jazz ) 
Vyacheslav Ganelin 
\\#end 
以上程序的显示结果为: 
\ Vyacheslav Ganelin 

但是如果$jazz为false,那么将没有输出。(书上说会没有输出,但是我觉得应该还有有“\”字符被输出。)


VTL:Formatting issues 
尽管在此用户手册中VTL通常都开始一个新行,如下所示: 
#set ( $imperial = [ “Munetaka”, “Koreyasu”, “Hisakira”, “Morikune” ] ) 
#foreach ( $shogun in $imperial ) 
$shogun 
#end 
但是像下面这种写法也是可以的: 
Send me #set($foo = [“$10 and”,”a cake”])#foreach($a in $foo)$a #end please. 
上面的代码可以被改写为: 
Send me 
#set ( $foo = [“$10 and “,”a cake”] ) 
#foreach ( $a in $foo ) 
$a 
#end 
please. 
或者 
Send me 
#set($foo = [“$10 and “,”a cake”]) 
#foreach ($a in $foo )$a 
#end please. 
这两种的输出结构将一样。


其他特性和杂项 
math 在模板中可以使用Velocity内建的算术函数,如:加、减、乘、除 
#set ( $foo = $bar + 3 ) 
#set ( $foo = $bar - 4 ) 
#set ( $foo = $bar * 6 ) 
#set ( $foo = $bar / 2 ) 
当执行除法时将返回一个Integer类型的结果。而余数你可以使用%来得到: 
#set ( $foo = $bar % 5 ) 
在Velocity内使用数学计算公式时,只能使用像-n,-2,-1,0,1,2,n这样的整数,而不能使用其它类型数据。当一个非整型的对象被使用时它将被logged并且将以null作为输出结果。


Range Operator 
Range operator可以被用于与#set和#foreach statement联合使用。对于处理一个整型数组它是很有用的,Range operator具有以下构造形式: 
[n..m] 
m和n都必须是整型,而m是否大于n则无关紧要。例子: 
First example: 
#foreach ( $foo in [1..5] ) 
$foo 
#end 

Second example: 
#foreach ( $bar in [2..-2] ) 
$bar 
#end 

Third example: 
#set ( $arr = [0..1] ) 
#foreach ( $i in $arr ) 
$i 
#end 

Fourth example: 
[1..3] 
上面四个例子的输出结果为: 
First example: 
1 2 3 4 5 

Second example: 
2 1 0 -1 -2 

Third example: 
0 1 

Fourth example: 
[1..3] 
注意:range operator只在#set和#foreach中有效。


Advanced Issue:Escaping and! 
当一个reference被“!”分隔时,并且在它之前有逃逸符时,reference将以特殊的方式处理。注意这种方式与标准的逃逸方式时不同的。对照如下: 
#set ( $foo = “bar” ) 
特殊形式                     标准格式 
Render前   Render后    Render前    Render后 
$\!foo         $!foo           \$foo           \$foo 
$\!{foo}     $!{foo}       \$!foo          \$!foo 
$\\!foo        $\!foo          \$!{foo}      \$!{foo} 
$\\\!foo       $\\!foo         \\$!{foo}     \bar


Velocimacro杂记 
Can I user a directive or another VM as an argument to a VM?
 
例如:#center ( #bold( “hello” ) ) 
不可以。一个directive的参数使用另外一个directive是不合法的。 
但是,还是有些事情你可以作的。最简单的方式就是使用双引号: 
#set ( $stuff = “#bold( ‘hello’ )” ) 
#center ( $stuff ) 
上面的格式也可以缩写为一行: 
#center ( “#bold( ‘hello’ ) ) 
请注意在下面的例子中参数被evaluated在Velocimacro内部,而不是在calling level。例子: 
#macro ( inner $foo ) 
inner : $foo 
#end 

#macro ( outer $foo ) 
#set ( $bar = “outerlala” ) 
outer : $foo 
#end 

#set ( $bar = ‘calltimelala’ ) 
#outer( “#inner($bar)” ) 
输出结果为: 
outer : inner : outerlala 
记住Veloctiy的特性:参数的传递是By Name的。例如: 
#macro ( foo $color ) 
<tr bgcolor = $color ><td>Hi</td></tr> 
<tr bgcolor = $color ><td>There</td></tr> 
#end 

#foo ( $bar.rowColor() ) 
以上代码将导致rowColor()方法两次调用,而不是一次。为了避免这种现象的出现,我们可以按照下面的方式执行: 
#set ( $color = $bar.rowColor() ) 
#foo ( $color )


can I register velocimacros via #parse()? 
目前,Velocimacros必须在第一次被模板调用前被定义。这就意味着你的#macro()声明应该出现在使用Velocimacros之前。 
如果你试图#parse()一个包含#macro() directive的模板,这一点是需要牢记的。因为#parse()发生在运行期,但是解析器在parsetiem决定一个看似VM元素的元素是否是一个VM元素,这样#parse()-ing一组VM声明将不按照预期的样子工作。为了得到预期的结果,只需要你简单的使用velocimacro.library使得Velocity在启动时加载你的VMs。


What is velocimacro autoreloading? 
velocimacro.library.autoreload是专门为开发而非产品使用的一个属性。此属性的默认值是false。


String concatenation 
开发人员最常问的问题是我如何作字符拼接?在java中是使用“+”号来完成的。 
在VTL里要想实现同样的功能你只需要将需要联合的reference放到一起就行了。例如: 
#set ( $size = “Big” ) 
#set ( $name = “Ben” ) 
The clock is $size$name. 
输出结果将是:The clock is BigBen.。更有趣的情况是: 
#set ( $size = “Big” ) 
#set ( $name = “Ben” ) 
#set ( $clokc = “$size$name” ) 
The clock is $clock. 
上例也会得到同样的结果。最后一个例子,当你希望混合固定字段到你的reference时,你需要使用标准格式: 
#set ( $size = “Big” ) 
#set ( $name = “Ben” ) 
#set ( $clock = “${size}Tall$name” ) 
The clock is $clock. 
输出结果是:The clock is BigTallBen.。使用这种格式主要是为了使得$size不被解释为$sizeTall。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 机器学习(二十八)——Monte-Carlo

    动态规划(续)Value Iterationvk+1(s)=maxa&#x2208;A(Rsa+&#x03B3;&#x2211;s&#x2032;&#x2208;SPss&#x2032;avk(s&#x2032;))" role="presentation">vk+1(s)=maxa∈A(Ras+γ∑s′∈SPass′vk(s′))vk+1(s)=maxa∈A(Rsa+γ∑s′∈…...

    2024/4/18 0:45:53
  2. layui上传组件整合进度条

    1、layui进度条样式 :<div id="uploadPatchForm" style="display:none" class="roundRect"><div id="uploadLoadingDiv"><div class="layui-progress" lay-showpercent="true" lay-filter="…...

    2024/4/12 8:48:16
  3. Java基础知识 14(String类,String类构造方法,判断功能,获取功能,转换功能)

    Java基础知识 14 String类 详细程序运行:E:\Java project\20200426-String-类-练习 字符串:是由多个字符组成的一串数据(字符序列)。 字符串可以看成是字符数组。 字符串的每个字符,从左往右是编有索引的,从0开始。 如果是String类,没有重写toString()方法,那就打印地址…...

    2024/4/12 8:48:16
  4. 指纹识别已经不再安全,科学家称“假手指”能够改进指纹识别

    从2013年的iPhone 5s开始,手机的指纹识别功能变得越来越普遍,但是还存在着一些安全漏洞,用橡胶制成的假手指就能够将手机解锁。密歇根州立大学的研究人员制作出了一种更加高级的版本,该版本的假手指能够用于测试指纹扫描仪,使它更难被入侵。指纹识别已经不再安全如今,指纹…...

    2024/4/12 8:49:10
  5. (JAVA自学笔记)创建一个对象都在内存中做了什么事情

    day:20130107JAVA是一种面向对象的语言,它本身具有面向对象的三大特性--封装,继承,多态。开发时,我们要记住,属性是用于存储数据的。直接被访问,容易出现安全隐患。所以,类中的属性通常被私有化,并对外提供公共的访问方法。这个方法一般有两个,规范写法:对于属性xx,…...

    2024/4/15 5:22:55
  6. 带进度条的Ajax文件上传

    之前分享了一篇关于使用FileApi实现Ajax上传文件 的文章,里面的Ajax文件上传是不带进度条的,今天分享一篇关于带进度条的Ajax文件上传文章。效果图: 项目结构图: 12-progress-upload.html文件: 页面中主要有一个上传文件控件,有文件被选择时响应selfile()方法,接着利用…...

    2024/4/12 8:48:46
  7. Monte Carlo Approximations

    准备总结几篇关于 Markov Chain Monte Carlo 的笔记。 本系列笔记主要译自 A Gentle Introduction to Markov Chain Monte Carlo (MCMC) 文章下给出的链接。 Monte Carlo Approximations Monte Carlo Approximation for Integration 理论部分 本文主要参考 Monte Carlo Approxi…...

    2024/4/12 8:49:04
  8. JS 之 (三)作用域链、闭包、面向对象

    作用域链定义变量在当前环境now、内部环境f1、内部深层环境f2/f3….都起作用的现象形成了一个链条,这个链条就称为变量的”作用域链”<html> <head> <meta charset=utf-8 /> <script type=text/javascript>var title = 链条;//title 在各个环境都起作用…...

    2024/4/12 8:48:52
  9. 无需插件利用Chrome将网页储存为mht文件

    感谢这篇文章在 Chrome 地址栏中键入"chrome://flags"Ctrl+F 来搜索"mhtml",改为"Enabled"打开任网页,右击“另存为”,即可...

    2024/4/20 16:01:44
  10. Velocity基本语法(一)

    一、基本语法 1、"#"用来标识Velocity的脚本语句,包括#set、#if、#else、#end、#foreach、#end、#iinclude、#parse、#macro等;如:#if($info.imgs) <img src="$info.imgs" border=0> #else <img src="noPhoto.jpg"> #end2、"…...

    2024/4/18 8:06:54
  11. Bootstrap抽样和Monte Carlo思想

    写在前面总是搞不懂、记不住这些名字好像很厉害的算法思想,这篇文章主要写一下Bootstrap抽样和蒙特卡罗算法思想。一、Bootstrap抽样1、基本思想Bootstrap抽样的基本思想是在全部样本未知的情况下,借助部分样本的有放回多次抽样,构建某个估计的置信区间,抽象地说,通过样本…...

    2024/4/14 15:53:49
  12. java工程师分享:我是如何自学成才的?

    原文:http://www.java800.com/peixun-79062115.html我是10年河南工业大学的毕业生,当时我们专业许多学生都去报了java培训机构,去达内的都不少。我也想去培训班,不过限于囊肿羞涩,动辄上万的培训费,再加上住宿、吃喝,少说也的拿出个1万多,对于贫困农村走出的我来说,可…...

    2024/4/18 5:04:55
  13. JavaSE 初学进度条JProgressBar

    预备知识创建进度条类后将其直接加入JFrame看看效果 public class JProgressBarDemo2 {public static void main(String args[]) {JFrame jf =new JFrame() ;JProgressBar jpb = new JProgressBar() ;jpb.setPreferredSize(new Dimension(400,30));//设置好首选大小利于显示jpb…...

    2024/4/12 8:48:40
  14. Win10在某些程序输入中文变成问号的解决方法

    在win10的某些程序中输入中文后,会直接显示成问号,换输入法也没用。这是怎么回事呢?其实,这并不是系统问题而是Windows自带的输入法所导致的,现在,一起来看下文关于此问题的具体解决方案。 1、打开设置面板,点击“时间和语言”进去;2、点击选择“语言”,然后选择自带中…...

    2024/4/14 15:54:05
  15. Velocity语法&创建模板

    Velocity 是完全基于Java语言开发的一套模板技术。 可以用来生成: HTML代码 JS代码 Java代码 邮件文本内容 手机短信内容 Velocity入门案例 首先创建vm模板文件,模板文件中写入: 你好,${name}代码: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("…...

    2024/4/27 21:19:18
  16. Java自学笔记之语言特点的再认识

    Java语言的特点 (1)面向对象 (2)跨平台性(字节码、Java虚拟机) (3)直接支持分布式的网络应用(除了支持基本的语言功能以外,Java核心类库还包括一个支持HTTP、SMTP和FTP等基于TCP/IP协议的类库。因此,Java应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问…...

    2024/4/17 5:55:16
  17. 音视频拖动进度条问题

    背景:前端audio/video原生标签,后台java response流返回现象:在火狐浏览器可以正常播放,也可以正常拖动进度条,但在谷歌浏览器下只能播放,不能拖动进度条。原因:暂不知。解决问题:前端不动,后台在响应头上加上这一句就可以了,亲测有效。response.addHeader("Acc…...

    2024/4/19 7:49:21
  18. 植物大战僵尸做挂教程。(共7集)最详细!!!!适合学习!!!

    植物大战僵尸做挂教程。(共7集)最详细!!!!适合学习!!!_精易论坛...

    2024/4/12 8:48:52
  19. mysql表结构的查询与修改

    MariaDB [test]> show create table bp \G; #查看bp表结构,id长度为20 *************************** 1. row ***************************Table: bp Create Table: CREATE TABLE `bp` (`id` int(20) NOT NULL DEFAULT 0,`name` varchar(20) DEFAULT…...

    2024/4/13 12:42:00
  20. 连续蒙特卡罗方法(Sequential Monte Carlo Methods)

    源自:http://www.stats.ox.ac.uk/~doucet/samsi_course.html* Check the more recent SMC & Particle Filters Resources 2012* Videolecture: Tutorial SMC Methods at NIPS 2009 (with Nando De Freitas) * Slides of the NIPS tutorial slides1 slides2ObjectivesTo p…...

    2024/4/12 8:49:04

最新文章

  1. 程序设计:C++ 一个用目录结构构建索引的类

    初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 有时候可以利用文件系统目录结…...

    2024/4/28 17:21:17
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Ubuntu磁盘扩容

    使用 df -h命令查看系统磁盘控件的使用情况&#xff1a; [samspobosrv:~]$ df -h Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 1.7M 1.…...

    2024/4/25 7:31:32
  4. 方案分享 | 嵌入式指纹方案

    随着智能设备的持续发展&#xff0c;指纹识别技术成为了现在智能终端市场和移动支付市场中占有率最高的生物识别技术。凭借高识别率、短耗时等优势&#xff0c;被广泛地运用在智能门锁、智能手机、智能家居等设备上。 我们推荐的品牌早已在2015年进入指纹识别应用领域&#xff…...

    2024/4/27 17:55:35
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/28 13:52:11
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/28 13:51:37
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/28 15:57:13
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57