昨天下了GAE的Eclipse插件,试着用了它的demo程序,觉得很有趣。
看了DEMO的源代码,感觉GAE在web界面的编辑控制上类似Apache Wicket的思路,将web前端编码采用窗体组件的方式实现了,确实很强。
对于用惯了传统web编程模型的我而言,能够理解GAE中业务逻辑放在server端实现的结构;但对于编写在server端的界面事件是如何绑定到web前端的感到很疑惑,我们从demo中看的出,事件和控件都是在界面生成后通过ID动态绑定上去的,[color=red]那么GAE是如何将后端的java handler中的逻辑绑定到前台呢?(难道将hanlder中的java代码转译成前台的js?)[/color]
这里要说的是,GAE绑定的不仅仅是一个事件。因为在后台的Handler处理中有如下语句:
注意该语句“String textToServer = nameField.getText();”,这句话是在server端执行的,那么client端如何事先知道要传回哪些input的值来提供server端获取呢?难道是全部嘛?
请熟悉这块技术的兄弟牛人们说说看,给点思路也行啊!
看了DEMO的源代码,感觉GAE在web界面的编辑控制上类似Apache Wicket的思路,将web前端编码采用窗体组件的方式实现了,确实很强。
对于用惯了传统web编程模型的我而言,能够理解GAE中业务逻辑放在server端实现的结构;但对于编写在server端的界面事件是如何绑定到web前端的感到很疑惑,我们从demo中看的出,事件和控件都是在界面生成后通过ID动态绑定上去的,[color=red]那么GAE是如何将后端的java handler中的逻辑绑定到前台呢?(难道将hanlder中的java代码转译成前台的js?)[/color]
这里要说的是,GAE绑定的不仅仅是一个事件。因为在后台的Handler处理中有如下语句:
private void sendNameToServer() {
sendButton.setEnabled(false);
String textToServer = nameField.getText();
textToServerLabel.setText(textToServer);
serverResponseLabel.setText("");
greetingService.greetServer(textToServer,
new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
// Show the RPC error message to the user
dialogBox
.setText("Remote Procedure Call - Failure");
serverResponseLabel
.addStyleName("serverResponseLabelError");
serverResponseLabel.setHTML(SERVER_ERROR);
dialogBox.center();
closeButton.setFocus(true);
}
......
......
}
注意该语句“String textToServer = nameField.getText();”,这句话是在server端执行的,那么client端如何事先知道要传回哪些input的值来提供server端获取呢?难道是全部嘛?
请熟悉这块技术的兄弟牛人们说说看,给点思路也行啊!