近日研究使用webwork(版本:2.2.1)的datepicker标签, 它用jscalendar来实现, 使用非常简单:
<
ww:datepicker
cssClass
="ListBox"
size
="16"
showstime
="true"
name
="start"
id
="start"
format
="%Y-%m-%d %H:%M"
/>
显示页面总说js错误, 什么什么对象没有定义之类的, 具体忘记了, 查看网页源代码发现它需要3个js文件:
<script type="text/javascript" src="/webwork/jscalendar/calendar.js"></script>
<script type="text/javascript" src="/webwork/jscalendar/lang/calendar-ch.js"></script>
<script type="text/javascript" src="/webwork/jscalendar/calendar-setup.js"></script> 用winRAR打开webwork-2.2.1.jar发现com\opensymphony\webwork\static\jscalendar\lang 目录并没有
calendar-ch.js文件,倒是有一个calendar-zh.js文件, 不晓得是怎么回事, 小弟对i18n没有研究, 估计是webwork的一个bug吧,发现有两个解决方法:
1.把calendar-zh.js改名为calendar-ch.js, 或把calendar-zh.js另存为calendar-ch.js, 然后重新打包webwork-2.2.1.jar
2.假设你的webwork.properties有这样的设置:
### Standard UI theme
### Change this to reflect which path should be used for JSP control tag templates by default
webwork.ui.theme=xhtml
webwork.ui.templateDir=template
#sets the default template type. Either ftl, vm, or jsp
webwork.ui.templateSuffix=ftl 修改/template/xhtml/datepicker.ftl:
<#if !stack.findValue("#datepicker_js_included")?exists>
<#assign trash = stack.setValue("#datepicker_js_included", true)/>
<script type="text/javascript" src="<@ww.url value="/webwork/jscalendar/" encode='false'/>calendar.js"></script>
<script type="text/javascript" src="<@ww.url value="/webwork/jscalendar/lang/" encode='false'/>calendar-zh.js"></script>
<script type="text/javascript" src="<@ww.url value="/webwork/jscalendar/" encode='false'/>calendar-setup.js"></script>
</#if>
<#include "/${parameters.templateDir}/simple/text.ftl" />
<a href="#" id="${parameters.id}_button"><img src="../images/pdate.gif" width="16" height="16" border="0" alt="点击这里选择日期"></a>
<script type="text/javascript">
Calendar.setup({
inputField : "${parameters.id}",
<#if parameters.format?exists>
ifFormat : "${parameters.format}",
</#if>
<#if parameters.showstime?exists>
showsTime : "${parameters.showstime}",
</#if>
button : "${parameters.id}_button",
<#if parameters.singleclick?exists>
singleclick : ${parameters.singleclick},
</#if>
step : 1
});
</script> 其实就是把calendar-${parameters.language?default("en")}.js修改成calendar-zh.js