我正在评估是否使用 SmartGWT,并且之前没有使用它的经验。我对日历小部件有一个特殊的问题。
当您访问航空公司/汽车租赁网站时,您需要指定月份中的哪一天进行预订,他们会弹出一个月历,客户用户可以单击前进/上一个月来选择月份。然后客户-用户从日历中选择该月的哪一天。
在 vaadin 中,您可以约束日历小部件来执行此操作。
有没有办法在 SmargGWT 中定义日历小部件的行为和约束来做到这一点?
我认为您正在寻找 smartgwt DateChooser。我在我的应用程序中使用它来处理类似的情况。
http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/widgets/DateChooser.html
有许多方法,例如 setDisableWeekends(Boolean disableWeekends) - 无法在周末创建事件,setTimelineRange(Date start, Date end) - 设置时间线将显示事件的范围,setWorkdayStart(String workdayStart)。
javadoc显示了有多少定制。
在最坏的情况下,如果 Calendar 类没有一些非常具体的功能,您总是可以对其进行子类化。
如果您需要很可能必须在 CSS 中进行的视觉更改。我已经用 firebug 检查了生成的 HTML,这可能很乏味,但 100% 可以使用 CSS 和 !important 属性更改元素的大小以覆盖内联样式。
Smartgwt 用户界面给人留下深刻印象。受到大量外观精美的小部件的诱惑,我忍不住在许多项目中使用它。有很多事情需要注意:
Smartgwt 是一个围绕大量 Javascript 库的 GWT 包装器。您很快就会意识到,要定制或更改小部件,或解决问题,您最终会离开 Java 并全神贯注于 Javascript。您没有采用 GWT 框架,而是采用了一个重要的 Javascript 框架。如果您查看日历展示示例,您很快就会意识到 GWT 中的自定义选项是有限的。
随着时间的推移,遇到了相当多的严重跨浏览器问题,主要是在不太广泛使用的浏览器(Safari、Chrome)中。但是,这些不太广泛使用的浏览器正在逐渐普及……
小部件和它们的数据源紧密集成,引擎盖下有 Javascript。用于从 SOAP 服务器资源为小部件提供动力的数据协议在我采用的版本之间中断了两次。而且,您最终会尝试最新的跨浏览器错误修复的新版本……通常,您会想要最新的快照。在这两种情况下,我都能够解决这个问题,但它涉及到深入研究 Javascript 框架。
以我的经验,smartgwt 的采用被证明是相当高的维护成本。对于某些应用程序,最好不要使用炫目的小部件,而主要使用 GWT 来开发更简单的用户界面。
说了这么多,smartgwt 和 smartclient 都得到了很好的支持。开发者论坛非常活跃和有用,问题很快得到解决。