【问题标题】:Is configuration-driven GWT UI possible?配置驱动的 GWT UI 是否可行?
【发布时间】:2013-05-10 11:23:37
【问题描述】:

我想要一个带有配置驱动 UI 的 GWT 应用程序,这意味着如果我进行某些数据库更改或部署不同的 XML 描述符(在 WAR 之外),那么我可以更改外观和感觉和 UI 的行为,而无需部署任何代码更改。我想要这个的原因不在这个问题的范围内,我需要提供一个太大的不相关的背景故事来证明把它全部放在这个问题中是合理的。

例如,假设使用一种特定配置,用户界面(GWT 术语中的位置,或页面/屏幕)可能仅包含屏幕中心的一个简单按钮。然后,我对数据库进行了一些更改,现在,屏幕的每个角落都有 4 个按钮,并且中间有一个“Hello,GWT”标签。相同的代码,但不同的 DB 值(或 XML)会导致 UI 的外观/感觉/行为不同。

我试图弄清楚如何设计这样一个系统,但我很挣扎,甚至不确定它是否可能。如果可能的话,我会很感激它如何工作的一个很好的解释,甚至可能是一些伪代码来让创意源源不断。

如果不可能,那么我想要一个具体的(确定的)答案来说明原因。正如我在 StackOverflow 上多次发现的那样,当有人说“这是不可能的!”时,这通常只是一个超出他们理解水平的高级话题 :-),而我是什么问不是不可能,只是很难!提前致谢!

【问题讨论】:

    标签: java xml gwt user-interface data-driven


    【解决方案1】:

    是的,这绝对是可能的。我经历过一次。

    但这不是一种标准的做法,所以不要指望在互联网上找到很多东西。您必须自己发明解决方案。

    简单地说,您必须创建一个通道/服务/JSON 服务,GWT 应用程序将从该服务中读取您的配置,并根据它构建 UI。您可以发明自己的描述语言,或使用某些现有格式(例如 XUL)来描述 UI。然而,这是一条艰难的道路,但一旦你完成它就会给你很大的满足感。

    【讨论】:

    • 谢谢@lechlukasz (+1) - 我很感激你的鼓励,但有一些后续:(1) 你能详细说明你所说的“频道”是什么意思吗?我正在考虑可能将 UI XML(我喜欢您对 XUL 的建议!)配置存储在数据库中,并使用 RequestFactory 的最佳实践来获取存储的 XML。这是你的意思吗?还有最重要的,(2)我知道GWT不太喜欢reelection,而且Java反射有些事情它做不到(因为JS交叉编译器不能兑现)它)...
    • ...所以我想知道 如何 这是可能的:在服务器端,我如何采用 XML/XUL,并使用它来动态创建新的UI 小部件并发送回客户端;但是以 GWT(和交叉编译的 JavaScript)可以支持的方式?您是否有来自项目的任何代码示例,您可以为此执行此操作?我想我在这里“透过树木看森林”很难。再次感谢!
    • 好吧,您将在服务器端解析 XUL,但您必须在客户端创建小部件。不,我没有任何代码示例,而且我对任何此类开源实现一无所知,因此您必须处理编写大量客户端代码的问题。 GWT 中缺乏对反射的支持意味着您必须通过 if/switch 语句来处理标签,是的,这会使代码变得更大。
    • 再次感谢@lechlukasz(我希望我能更多地投票)。在您更新答案之前,我正在考虑以下设计:(1)使用 XUL 工具包来设计我的不同 UI 并生成 XUL。然后,将新的 XUL 保存到我的数据库中。 (3) 在服务器端,我有一个ViewService,每个 GWT Presenter(我正在使用 MVP)都可以使用它来获取其各自的视图。所以FizzPresenter 会从ViewService#fetchView(FizzPresenter.class) 电话中得到FizzView。在后台,(4) ViewService 使用 XULBuilder 类从数据库中获取 XUL 并将其转...
    • ...进入 UI 组件。 这是一种可行的方法吗?如果不是,为什么? 如果可能,我想在服务器端进行所有动态视图渲染...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    相关资源
    最近更新 更多