如何保证 class 永远不会暴露在 Vaadin 客户端
How to guarantee a class is never exposed client side with Vaadin
我了解到Vaadin使用一些逻辑只暴露UI代码,然后调用服务器通过Javascript访问代码。但是,假设我有一个 Listener
,例如一些引用其他 类 的代码。所以假设我有类似的东西:
PojoClass data = DatabaseClass.getDataFromDatabase();
doSomeProcessingOnData(data);
..
myTextField.setValue(data.getSomeValue());
..
现在我如何确定 DatabaseClass
背后的代码没有暴露为 Javascript。我假设这只是发生了,但更具体地说,如何说 doSomeProcessingOnData(data)
方法可能调用 4-5 个不同的 类 并具有一些内部 IP 属性 不被公开?我知道 PojoClass
会被暴露,但我不希望 doSomeProcessingOnData(data)
的内部被暴露。
业务逻辑留在服务器端
您的 Vaadin 应用程序的业务逻辑完全保留在服务器端 Java。所以没有暴露的风险。
Vaadin 将用户界面远程连接到客户端。
例如,单击按钮时,客户端Java脚本库向服务器发送信号到运行服务器上的ClickListener代码 。如果该服务器端 Java 代码导致用户界面小部件的状态发生变化,那么 Vaadin 会将这些小部件状态变化中继到客户端的 Java 脚本库,以便为用户提供视觉更新。 客户端仍然幸福地不知道您的服务器端 Java 代码连接到数据库,调用 Web 服务,打开到数据馈送的套接字连接,进行一些产生新 "Grand Total" 值的会计计算,将消息发布到队列,发送电子邮件,并将条目写入审计跟踪。客户端只知道:"button clicked" --> "Grand Total textField has new value to display".
我了解到Vaadin使用一些逻辑只暴露UI代码,然后调用服务器通过Javascript访问代码。但是,假设我有一个 Listener
,例如一些引用其他 类 的代码。所以假设我有类似的东西:
PojoClass data = DatabaseClass.getDataFromDatabase();
doSomeProcessingOnData(data);
..
myTextField.setValue(data.getSomeValue());
..
现在我如何确定 DatabaseClass
背后的代码没有暴露为 Javascript。我假设这只是发生了,但更具体地说,如何说 doSomeProcessingOnData(data)
方法可能调用 4-5 个不同的 类 并具有一些内部 IP 属性 不被公开?我知道 PojoClass
会被暴露,但我不希望 doSomeProcessingOnData(data)
的内部被暴露。
业务逻辑留在服务器端
您的 Vaadin 应用程序的业务逻辑完全保留在服务器端 Java。所以没有暴露的风险。
Vaadin 将用户界面远程连接到客户端。
例如,单击按钮时,客户端Java脚本库向服务器发送信号到运行服务器上的ClickListener代码 。如果该服务器端 Java 代码导致用户界面小部件的状态发生变化,那么 Vaadin 会将这些小部件状态变化中继到客户端的 Java 脚本库,以便为用户提供视觉更新。 客户端仍然幸福地不知道您的服务器端 Java 代码连接到数据库,调用 Web 服务,打开到数据馈送的套接字连接,进行一些产生新 "Grand Total" 值的会计计算,将消息发布到队列,发送电子邮件,并将条目写入审计跟踪。客户端只知道:"button clicked" --> "Grand Total textField has new value to display".