2008年9月9日
一、如果是XP(vista)与UBUNTU之间,先装XP,后装ubuntu,ubuntu会在grub中加入XP启动项。可以手动添加。
对应XP,vista,2003的
title Microsoft Windows XP Professional
root (hd0,n) # n视XP所在分区而定,第一分区就是0
default
makeactive
chainloader +1
对应2003,下面也可以。
title Earlier Version of Windows
#查找WINDOWS XP/2003 ,有些grub版本还不支持find命令
find --set-root /ntldr
chainloader /ntldr
对应vista,在grub的menu.lst添加也可以,不指定分区
title Windows Vista(default)
#查找 Vista bootmgr ,有些grub版本还不支持find命令
fallback 4
find --set-root /bootmgr
chainloader /bootmgr
二、如果先装的UBUNTU,或者先装的XP后来重装XP,也可以在XP启动项中加入UBUNTU启动内容。
这个就需要在boot.ini中添加grldr,grldr如果放在C盘根目录下面的话,加c:\grldr=" Ubuntu"。还需要C盘下有BOOT文件夹,文件夹里是GRUB文件夹,内含MENU.LST文件。包括上面的grldr都是grub for dos里面包含的内容。MENU.LST的内容需要根据你的UBUTNU BOOT所在位置,及内核而定.grldr,arldr,ntldr分别是grub,dos工具箱,xp引导所用的三个文件。menu.lst内容类似下:
title Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,*) #### *根据你的UBUNTU安装盘而定
kernel /vmlinuz-2.6.22-14-generic root=/dev/hda(n) ro quiet splash
initrd /initrd.img-2.6.22-14-generic
quiet
如此启动XP里,在启动项里先ubuntu,就可以进入LINUX系统。
先从ubuntu的grub选项中选择XP,再从XP选项中先ubuntu,一样能启动ubuntu,这与ubuntu启动菜单中直接选择启动不矛盾。
三、XP与VISTA,先XP,后VISTA没问题的了。
先VISTA后XP,在XP系统中使用VistaBootPRO 3.1设置也可以,有的会启动的时候会出现问题?据说需要dotnetfx.exe和langpack.exe两个文件。最后安装vistabootpro3.1.看这里:http://bbs.zol.com.cn/index20070812/index_308_6904.html
用VISTA光盘也可以修复吧。看来还是修复到vista启动xp?vista是加入不到xp的boot.ini中了吧。具体:放入光盘。CMD中#X: #cd boot #bootsect /nt60 sys 行了,bootsect /nt52 sys 这个命令是删除VISTA启动的。(CMD一定要在系统文件夹sysem32中的CMD,??什么意思)重启进入VISTA,http://www.zhaodll.net/dll/b/200701/2840.html这里有bootsect下载
bcdedit /create {ntldr} -d "!·#¥%……"
bcdedit /set {ntldr} device partition=d: #d vista盘符?
bcdedit /set {ntldr} path \ntldr
bcdedit /displayorder {ntldr} /addlast
由此看来,个人感觉grub是启动工具里面最好的东东。通吃。三系统有问题,装grub for dos 或者用ubuntu livecd启动,命令行下执行grub命令,写入MBR中grub,也行。grub麻烦的地方需要根据自己系统情况手动修改menu.lst项。建议用之。
四、先ubuntu,后vista又是什么情况。
下载grub4dos软件包
提取文件grldr 和grldr.mbr拷贝到C盘(文件系统要ntfs的)根目录
运行cmd,执行命令:
bcdedit /create /d "GRUB MENU" /application bootsector#
建立一个名称为“GRUB MENU”,通过加载类型为“引导扇区文件”的启动项
生成{ID}复制下来
bcdedit /set {ID} device partition=c: #设置引导扇区文件所在的分区,grldr.mbr所在分区
bcdedit /set {ID} path \grldr.mbr #指定引导扇区文件的路径和文件名
bcdedit /displayorder {ID} /addlast #增加这个Ubuntu的菜单项到末尾。
下面修改menu.lst,就行了。吼吼,xp用boot.ini. vista的bcdedit看这命令也是设置grldr的位置,这个命令添加到哪个文件去了呢?为什么不能用文本修改?
五、如果在ubuntu中终端下执行:
#dd if=/dev/sda3 of=/dev/sda6/linuxloader/ubuntu.lnx bs=512 count=1
/dev/sda3试你的ubuntu boot所在分区而定。生成ubuntu.lnx,用此文件取代上面grldr.mbr的话。
在vista下,用管理员权限运行cmd,然后
bcdedit /create /d "Ubuntu 7.04" /application bootsector
bcdedit /set {GUID} device partition=C:
bcdedit /set {GUID} path \ubuntu.lnx
bcdedit /displayorder {GUID} /addlast
就行了,不需要menu.lst
总结:由以上内容可知先装谁都没问题了,也是都可以修复的。xp-vista-ubuntu xp-ubuntu-vista vista-xp-ubuntu vista-ubuntu-xp ubuntu-vista-xp(嘿,这个真豺)ubuntu-xp-vista
如果续个MAC,还是不用MAC启动菜单好,在xp中加tboot。
Bcdedit 位于X:\Windows\system32\ "X:"为安装vista的盘符。
储存操作指令
====================
/createstore 创建一个新的空白启动配置数据文件。
bcdedit /createstore C:\Data\BCD 创建BCD启动配置数据文件储存到“C:\DATA\”文件夹。
/export 备份启动配置数据文件。
bcdedit /export "C:\Data\BCD Backup" 备份BCD启动配置文件到“C:\Data\”文件夹,并以“BCD Backup”命名。
/import 还原启动配置数据文件。
bcdedit /import "C:\Data\BCD Backup" 从“C:\Data\”文件夹恢复BCD启动配置文件。
储存项目操作指令
====================
/copy 项目拷贝
操作系统启动项目的拷贝:
bcdedit /copy {cbd971bf-b7b8-4885-951a-fa03044f5d71} /d "Copy of entry"
/create 新建项目
创建操作系统载入程序项目的 NTLDR(Ntldr):
bcdedit /create {ntldr} /d "Earlier Windows OS Loader"
创建存储器磁碟另外的选择项项目:
bcdedit /create {ramdiskoptions} /d "Ramdisk options"
创建一个新的操作系统启动项目:
bcdedit /create /d "Windows Vista" /application osloader
创建一个新的调试器:
bcdedit /create {dbgsettings} /d "Debugger Settings"
/delete 删除项目
删除指定的操作系统项目:
bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71}
删除指定的操作系统项目但启动时不显示项目(彻底删除):
bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71} /cleanup
删除指定的操作系统项目但启动时显示项目:
bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71} /nocleanup
删除操作系统载入程序项目的 NTLDR:
bcdedit /delete {ntldr} /f
项目选择操作指令
====================
/deletevalue 删除项目选择项。
删除启动管理的bootmgr选择项项目:
bcdedit /deletevalue {bootmgr} bootsequence
删除(WinPE)操作系统的数值开机项目:
bcdedit /deletevalue winpe
删除来自指定的操作的 Windows PE 数值系统开机项目:
bcdedit /deletevalue {cbd971bf-b7b8-4885-951a-fa03044f5d71} winpe
/set 设定项目选择项数值。
设定操作系统“cbd971bf-b7b8-4885-951a-fa03044f5d71”引导分区“C”:
bcdedit /set {cbd971bf-b7b8-4885-951a-fa03044f5d71} device partition=C:
指定的操作系统引导文件“ windows\ system 32\ winload.exe”:
bcdedit /set {cbd971bf-b7b8-4885-951a-fa03044f5d71} path \windows\system32\winload.exe
设定“NX”为“OptIn”:
bcdedit /set nx optin
更改系统名称
默认XP系统名称在Vista启动管理器中是"earlier version of Windows",更改:
bcdedit /set {ntldr} Deion "Windows XP Professional SP2"
默认Vista系统名称在Vista启动管理器中是"Microsoft Windows",更改:
bcdedit /set {current} Deion "Windows Vista 5456"
输出控制指令
====================
/enum 在储存中的列表项目。
列出所有的操作系统载入程序启动项目:
bcdedit /enum OSLOADER
列出所有的启动管理项目:
bcdedit /enum BOOTMGR
列出默认的启动项目:
bcdedit /enum {default}
列出指定的操作系统启动项目:
bcdedit /enum {b38a9fc1-5690-11da-b795-e9ad3c5e0e3a}
/v 列出所有活动的项目
bcdedit /enum ACTIVE /v
启动管理控制指令
====================
/bootsequence 设定启动列表顺序。
设定二个操作系统项目和启动顺序:
bcdedit /bootsequence {802d5e32-0784-11da-bd33-000476eba25f} {cbd971bf-b7b8-4885-951a- fa03044f5d71} {ntldr}
加入操作系统项目为启动列表最后项:
bcdedit /bootsequence {802d5e32-0784-11da-bd33-000476eba25f} /addlast
/default 设定默认启动项目。
设定默认启动项目:
bcdedit /default {cbd971bf-b7b8-4885-951a-fa03044f5d71}
设定默认启动操作系统程序为 NTLDR:
bcdedit /default {ntldr}
/displayorder 设定哪一个系统启动显示多启动画面。
设定二个操作系统项目和在启动管理显示命令中被建立操作系统载入的程序 NTLDR:
bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f}
{cbd971bf-b7b8-4885-951a-fa03044f5d71} {ntldr}
把指定的操作系统项目加入启动管理显示命令结束:
bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f} /addlast
/timeout 设定启动暂停数值。
/toolsdisplayorder 设定命令在哪一个启动管理显示工具画面。
设定二个工具项目和内存诊断在那启动管理工具显示命令:
bcdedit /toolsdisplayorder {802d5e32-0784-11da-bd33-000476eba25f}
{cbd971bf-b7b8-4885-951a-fa03044f5d71} {memdiag}
把指定的工具项目加入启动的结束管理工具显示命令:
bcdedit /toolsdisplayorder {802d5e32-0784-11da-bd33-000476eba25f} /addlast
为一个启动应用程序控制紧急处理服务的指令
====================
/bootems
开启启动管理紧急处理服务:
bcdedit /bootems {bootmgr} ON
/ems
为目前的操作系统启动项目 EMS 开启:
bcdedit /ems ON
/emssettings 设定紧急处理服务参数。
设定 EMS 参数使用基本输出入系统设定:
bcdedit /emssettings BIOS
本贴来自中关村在线产品论坛:<a href='http://group.zol.com.cn/'>http://group.zol.com.cn/</a>,本帖地址:<a href='http://nbbbs.zol.com.cn/1/9_64.html' target='_blank'>http://nbbbs.zol.com.cn/1/9_64.html</a>
在之前基于NT的Windows系统中,Windows使用Ntldr作为Boot Loader来启动系统,——所谓boot loader,在指在操作系统内核运行之前执行的一段小程序,系统通过它来初始化硬件设备、建立内存空间的映射图等,将系统的软硬件环境设置成一个合适的状态,为最终调用操作系统内核准备好正确的环境。——在启动过程中,Ntldr 使用Boot.ini 文件来确定在启动/引导过程中要显示哪些操作系统选项,我们对启动选项的设置可以通过修改boot.ini文件中相应内容实现。
在Windows Vista中,微软引入了一种全新的boot loader架构, Windows Boot Manager (Bootmgr.exe)。与Ntldr严重地依赖于硬件不同的是,Windows Vista中的新架构可以实现完整的硬件独立性,且能够与多种操作系统无缝结合,让Windows Vista的启动/引导过程更加快速与安全。同时,将之前Windows 系统中由Boot.ini管理的内容移交给新的Boot Configuration Data (BCD : 启动设置数据),当然,也提供了新的启动选项编辑工具,BCDEdit (BCDEdit.exe),来管理启动设置。
BCDEdit : Windows Vista启动设置编辑工具
在传统的基于BIOS的计算机中,如果只安装Windows Vista,除了极早期的Windows Vista测试版本外,您将会发现 Boot.ini 文件已经彻底从系统中消失;如果系统中安装了Windows Vista和之前的WIndows系统如Windows XP,虽然仍可找到 Boot.ini 文件,不过,这个文件只作用于那些系统,而不会对 Windows Vista的启动有任何影响。
在基于EFI (Extensible Firmware Interface : 可扩展固件接口,以后采用这种接口的PC会越来越多 )的计算机中,Boot.ini 文件则更不复存在,在基于EFI的系统中,启动选项被贮存在主板的存储器中。此时要修改启动选项,要么通过能够读写NVRAM的工具如NvrBoot,要么使用上文提到的BCDEdit。
由此可见,在Windows Vista中,想要再像之前Windows XP中那样通过一个简单的文本编辑器来修改Boot.ini的方式来管理启动选项已经不可能了,要对启动设置进行修改,只能使用命令格式相对要复杂得多的BCDEdit。
此外,微软也在Windows Vista 中提供了可通过WMI (Windows Management Instrumentation : Windows管理规范)调用的 BCD 类,通过它可以用编程的方式修改BCD数据,不过,相信对绝大多数用户而言,这更是不可能的任务。
启动BCDEdit
需要注意的是,BCDEdit不是一个运行于图形界面下的程序,而是一个命令行工具,该文件 (Bcdedit.exe) 位于 “\Windows\System32”目录下。
要执行BCDEdit,首先应进入命令行窗口,并要将操作用户并提升至管理员权限。
在命令行窗口中,转到系统目录如 “C:/windows/system32”下,然后输入“ bcdedit” 即可。
BCDEdit命令简介
通过命令行工具Bcdedit,我们可以添加、删除及修改BCD (Boot Configuration Data)中的对象。在BCD中,每个对象均具有唯一的 GUID (Globally Unique Identifier : 全局唯一标识符),如系统中的每块硬盘、每个分区的GUID (全局唯一标识符)均不相同。
在BCD中,硬盘或分区的GUID可分为如下几类:
{legacy} :指存在上一代Windows系统如Windows XP的硬盘或分区;
{default} : 默认操作系统所在硬盘或分区;
{current} : 当前硬盘或分区;
{c34b751a-ff09-11d9-9e6e-0030482375e7} : 类似于这个格式的GUID指其他安装了操作系统的硬盘或分区。
(注:这只是个例子,具体数字根据硬盘或分区参数会有相应变化,但均会类似于{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}格式)。
BCDEDIT命令
bcdedit /? : 显示命令帮助
bcdedit.exe /? CREATESTORE : 显示命令参数“ CREATESTORE ”的详细信息,——当然,“ CREATESTORE ”也只是示例,使用中对其他任何可用参数也均可使用类似格式查看该参数的具体说明。
bcdedit 或 bcdedit /enum all : 显示Windows Vista系统当前的启动设置数据,这时系统中所有安装了操作系统的硬盘或分区均会显示相应的 GUID 标识,如 {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} 。
使用BCDEdit备份与恢复启动选项
在对Windows Vista的启动选项修改之前,最好先对其备份,以防万一操作失误或其他故障导致系统无法启动。
bcdedit /export “D:\BCD Backup\Bcd Backup” : 将启动设置备份到D盘 “BCD Backup” 目录下;
bcdedit /import “D:\BCD Backup\Bcd Backup” : 恢复之前备份在D盘 “BCD Backup”目录下启动选项。
使用BCDEdit修改启动菜单选项
作为一种良好的操作习惯,在对Windows Vista的启动选项进行任何修改前,首先要对BCD中的启动选项进行备份,相应的命令上页我们已介绍过,在此不再赘述;其次,使用“bcdedit ”或“ bcdedit /enum all ”来查看系统中硬盘或分区的正确 GUID 标识,并将其记录下来。毕竟,BCDEdit只是一款命令行工具,我们操作时需手动输入类似“{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}”这样的长字符串时,很容易出错,而这往往会导致Windows Vista启动失败。
下面详细介绍使用BCDEdit修改启动选项的常用命令格式:
bcdedit /set {legacy} Description “Windows XP Professional SP2” : 修改上一代操作系统在启动菜单中的显示内容,比如说我们也可将其修改为“Vista天地专用XP SP2”之类。注意,命令中的引号不可省略;
bcdedit /set {current} description “Windows Vista Build 5270 x86″ : 修改当前启动硬盘或分区上的操作系统在启动菜单中的显示内容。注意,当前分区上的操作系统可能为Windows Vista,也可以是其他系统,当然,命令中的引号也不可省略;
bcdedit /set {5189b25c-5558-4bf2-bca4-289b11bd29e2} description “Windows Vista Build 5270 x64” : 修改安装于其他硬盘或分区的系统在启动菜单中的显示内容,使用这项命令时一定要注意该硬盘/分区的GUID输入正确,相应的GUID可通过“ bcdedit ”或“ bcdedit /enum all ”命令查看。
bcdedit /default {current} : 将当前启动硬盘/分区中的操作系统设置为默认启动的系统;
bcdedit /default {5189b25c-5558-4bf2-bca4-289b11bd29e2} : 设置指定GUID上的操作系统为默认启动的系统;
bcdedit /default {legacy} : 设置上一代Windows 系统Windows XP为默认启动的系统;
bcdedit /displayorder : 设置启用菜单中各项的显示顺序,如:
bcdedit.exe /displayorder {legacy} {current}
将首先显示Windows XP,然后再显示默认启动的系统如Windows Vista;
bcdedit /timeout 15 : 将默认的启动菜单显示时间30秒更改为15秒,当然,您可以将这个时间修改为任何您希望的数值。
使用BCDEdit修复硬盘/分区结构错误
在对启动选项的修改过程中,如添加或删除某个硬盘/分区时,可能会因操作中的不慎导致硬盘/分区结构的混乱,除了采用恢复修改前的备份方法外,也可以首先使用BCDEdit来尝试一下修复。
具体方法如下:
X:\>X:\boot\fixntfs.exe -lh -all : 这时的“ X: ”指引导目录 “boot” 所在的硬盘/分区;
bcdedit /set {5189b25c-5558-4bf2-bca4-289b11bd29e2} device partition=X: : 将指定GUID的分区设为启动分区。注意,这里的“ X: ”的GUID须与指定值不同,同时,运行该命令后,必须接着运行下面的osdevice命令;
bcdedit /set {5189b25c-5558-4bf2-bca4-289b11bd29e2} osdevice partition=X: : 将指定GUID的分区设为启动分区。注意,这个命令必须与上面的device命令配对使用,同时“ X: ”的GUID须与指定值不同。
资料引用:http://www.knowsky.com/340968.html
http://www.chinaz.com/Server/Linux/02252341R008.html
Tomcat 5的数据源配置跟Tomcat 5.5的数据源配置有很多的差别,Tomcat 6的数据源配置跟Tomcat 5.5的配置基本上相同。
以前的Tomcat5的配置需要在server.xml文件当中配置或者在conf/Catalina/localhost下面相应的上下文配置文件做配置。这种配置方式不合理的地方在于,假如数据库做了更改,程序员需要手工去修改这些文件,不利于团队开发。
Tomcat 5.5跟Tomcat 6的配置显得更为简单,我们只需要在我们的WebRoot目录下,新建一个META-INF的目录(假如不存在),在该目录下创建一个context.xml文件,(或conf目录下的全局context.xml),并且在context.xml文件当添加以下的配置信息(要根据自己的情况稍加修改):
程序代码
<Context>
<Resource name="jdbc/tfms" auth="Container" type="javax.sql.DataSource"
maxActive="50" maxIdle="30" maxWait="10000" logAbandoned="true"
username="sa" password="password" driverClassName="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://localhost:1433/TransfusionMngDB;tds=8.0;lastupdatecount=true"/>
</Context>
其中:
name 表示指定的jndi名称
auth 表示认证方式,一般为Container
type 表示数据源床型,使用标准的javax.sql.DataSource
maxActive 表示连接池当中最大的数据库连接
maxIdle 表示最大的空闲连接数
maxWait 当池的数据库连接已经被占用的时候,最大等待时间
logAbandoned 表示被丢弃的数据库连接是否做记录,以便跟踪
username 表示数据库用户名
password 表示数据库用户的密码
driverClassName 表示JDBC DRIVER
url 表示数据库URL地址
在以往的tomcat当中还需要在web.xml指定相应的resource,在tomcat 5.5以后的版本不写也可以,但建议还是配置。
程序代码
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/tfms</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
配置完之后,还需要将JDBC DRIVER存放在%TOMCAT_HOME%/lib里面,这是必须的,不然,tomcat没有办法找到driver
之后重新启动tomcat
www.apache.com 发现新版本6.18 download core→zip
bin目录下 startup.bat ctatlina.bat 中添加 JAVA_HOME/JRE_HOME CATALINA_HOME/TOMCAT_HOME
Windows Service Installer方式则安装时自动添加
现在喜欢在windows或linux中都不添加任何系统变量除java_home 因为每次配置到最后全乱成一团
关于JVM和tomcat的内存问题
tomcat6.0只须设置:JAVA_OPS tomcat6.0之前设置:CATALINA_OPTS/TOMCAT_OPTS
如 SET CATALINA_OPTS= -Xms64m -Xmx512m;
ms是JVM初始化堆的大小,mx是JVM堆的最大值,一般说来,你应该使用物理内存的80% 作为堆大小。.
引用:
有以下几种方法可以选用:
第一种方法:
Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下设置:
JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'
需要把这个两个参数值调大。例如:
JAVA_OPTS='-Xms256m -Xmx512m'
表示初始化内存为256MB,可以使用的最大内存为512MB。
第二种方法: 环境变量中设 变量名:JAVA_OPTS 变量值:-Xms512m -Xmx512m
第三种方法:前两种方法针对的是bin目录下有catalina.bat的情况(比如直接解压的Tomcat等),但是有些安装版的Tomcat下没有catalina.bat,这个时候可以采用如下方法,当然这个方法也是最通用的方法:打开tomcatHome/\bin/\tomcat5w.exe,点击Java选项卡,然后将会发现其中有这么两项:Initial memory pool和Maximum memory pool.Initial memory pool这个就是初始化设置的内存的大小。Maximum memory pool这个是最大内存的大小
也可在【tomcat配置窗口】-【Java标签】-【Java Options】,输入JVM优化参数:
-Xms512M
-Xmx512M
-Xverify:none
-XX:PermSize=128M
-XX:MaxPermSize=256m
-XX:MaxNewSize=256m
-XX:+UseAdaptiveSizePolicy
-XX:+UseParallelGC
-XX:+UseParallelOldGC
-XX:NewSize=200m
-Xmn200m
注意 一行一句配置 前后都不能有空格
连接器优化 禁止和允许列目录下的文件 禁止和允许主机或IP地址访问
设置完了就按确定然后再重启TOMCAT你就会发现tomcat中jvm可用的内存改变了
当struts2 theme为ajax时 使用UI标签总是自动添加<tr> <td>
可以在根目录,建立template文件夹,将struts2-core-xx.jar下的template文件夹解压其中
在templaate文件夹下的 ajax 下建立 text.flt
内容如下
<#--
this is controlheader-core.ftl
Only show message if errors are available.
This will be done if ActionSupport is used.
-->
<#assign hasFieldErrors = parameters.name?exists && fieldErrors?exists && fieldErrors[parameters.name]?exists/>
<#if hasFieldErrors>
<#list fieldErrors[parameters.name] as error>
<tr errorFor="${parameters.id}">
<#if parameters.labelposition?default("") == 'top'>
<td align="left" valign="top" colspan="2"><#rt/>
<#else>
<td align="center" valign="top" colspan="2"><#rt/>
</#if>
<span class="errorMessage">${error?html}</span><#t/>
</td><#lt/>
</tr>
</#list>
</#if>
<#--
if the label position is top,
then give the label it's own row in the table
<tr>
<#if parameters.labelposition?default("") == 'top'>
<td align="left" valign="top" colspan="2"><#rt/>
<#else>
<td class="tdLabel"><#rt/>
</#if>
<#if parameters.label?exists>
<label <#t/>
<#if parameters.id?exists>
for="${parameters.id?html}" <#t/>
</#if>
<#if hasFieldErrors>
class="errorLabel"<#t/>
<#else>
class="label"<#t/>
</#if>
><#t/>
<#if parameters.required?default(false) && parameters.requiredposition?default("right") != 'right'>
<span class="required">*</span><#t/>
</#if>
${parameters.label?html}<#t/>
<#if parameters.required?default(false) && parameters.requiredposition?default("right") == 'right'>
<span class="required">*</span><#t/>
</#if>
:<#t/>
<#include "/${parameters.templateDir}/xhtml/tooltip.ftl" />
</label><#t/>
</#if>
</td><#lt/>
add the extra row
<#if parameters.labelposition?default("") == 'top'>
</tr>
<tr>
</#if>
-->
<#if parameters.form?exists && parameters.form.validate?default(false) == true>
<#-- can't mutate the data model in freemarker -->
<#if parameters.onblur?exists>
${tag.addParameter('onblur', "validate(this);${parameters.onblur}")}
<#else>
${tag.addParameter('onblur', "validate(this);")}
</#if>
</#if>
<#--
<#include "/${parameters.templateDir}/${themeProperties.parent}/controlheader.ftl" />
-->
<#include "/${parameters.templateDir}/simple/text.ftl" />
<#--
<#include "/${parameters.templateDir}/xhtml/controlfooter.ftl" />
-->