如何获取xp:dateTimeHelper对应的Dojo日历Dijit以设置firstdayoftheweek属性?
XPages设置Dojo日历首周第一天为周一的解决方法
首先得明确:XPages里搭配xp:dateTimeHelper的输入框,实际对应Dojo的DateTextBox组件,日期选择面板是它弹出的Calendar dijit——你之前获取的要么是输入框的DOM元素,要么是DateTextBox实例,还没触达里面的Calendar组件。
具体操作步骤:
获取DateTextBox的Dijit实例
别在页面刚加载完就执行代码,得等Dojo组件完全初始化。用dojo/ready包裹代码,再通过组件的客户端ID获取实例——如果输入框在面板、循环这类命名容器里,要使用完整的客户端ID:require(["dojo/ready", "dijit/registry"], function(ready, registry) { ready(function() { // 拿到DateTextBox实例 var dateBox = registry.byId("#{javascript:getComponent('agenda').getClientId(facesContext)}"); if (!dateBox) return;取出嵌套的Calendar日历组件
DateTextBox的日期选择面板存在popup属性中,子组件数组的第一个元素就是Calendar实例:var calendar = dateBox.popup.childWidgets[0];设置首周第一天并刷新生效
将firstDayOfWeek设为1(代表周一),然后调用refresh()让设置立即生效:calendar.set("firstDayOfWeek", 1); calendar.refresh(); }); });
小提示
- 如果输入框不在命名容器中,也可以简化为
registry.byId("#{id:agenda}")获取实例,但用getComponent生成客户端ID的方式适配性更强,不管有没有嵌套容器都能正常工作。 - 必须等待Dojo初始化完成后执行代码,否则会出现获取不到组件实例的情况。
内容的提问来源于stack exchange,提问作者Patrick Kwinten
相关产品推荐
相关产品推荐

