gwt之mvc4g

简介:

Mvc4g是一个简单的框架来实现的GWT应用程序的MVC模式。

主要思想

其主要思想是,以减轻开发人员的工作,以单独的视图从模型。该框架是一个XML文件,将允许开发人员告诉视图发射事件时要执行什么样的行动需要配置。

框架如何工作

具体步骤如下图

事件
是创建活动的视图控制器。事件包含两部分信息:

执行的动作的名称
对象传递到行动

UserBean user = new UserBean();

user.setName("John Smith");

new Event("CreateUser", user);

控制器
控制器接收事件,并根据事件动作的名称,执行的行动。
例如,如果您有以下事件触发:

Event e =newEvent("doOperation","+");

以下Mvc4g配置文件:

<actionname="doOperation"class="com.mvc4g.example.client.OperationAction"/>

然后控制器调用以下行动的实例:

com.mvc4g.example.client.OperationAction

要创建一个视图,你需要:

实施com.mvc4g.client.ViewInterface
有一个默认的构造

视图可以创建事件和火灾控制器调用的handleEvent函数。

Event e =newEvent("doOperation","+");
controller.handleEvent(e);

详细的示例

Action

package com.mvc4g.example.client;

import com.mvc4g.client.ActionInterface;

import com.mvc4g.client.Controller;

public class OperationAction implements ActionInterface {

private int value = 0;

@Override

public void execute(Controller controller, Object form) {

//Execute action

String operation = (String) form;

if("+".equals(operation)){

value++;

}

else if("-".equals(operation)){

value--;

}

//Update the view

((SimpleCalculatorView)controller.getView("mainView")).updateScreen(Integer.toString(value));

}

}

view

package com.mvc4g.example.client;

import com.google.gwt.event.dom.client.ClickEvent;

import com.google.gwt.event.dom.client.ClickHandler;

import com.google.gwt.user.client.ui.Button;

import com.google.gwt.user.client.ui.Composite;

import com.google.gwt.user.client.ui.HorizontalPanel;

import com.google.gwt.user.client.ui.RootPanel;

import com.google.gwt.user.client.ui.TextBox;

import com.google.gwt.user.client.ui.VerticalPanel;

import com.mvc4g.client.Controller;

import com.mvc4g.client.Event;

import com.mvc4g.client.ViewInterface;

public class SimpleCalculatorView extends Composite implements ViewInterface {

private Controller controller = null;

private TextBox screen = new TextBox();

public SimpleCalculatorView(){

screen.setWidth("50px"); screen.setEnabled(false); screen.setText("0");

Button add = new Button("+1");

add.addClickHandler(new ClickHandler(){

@Override

public void onClick(ClickEvent event) {

//Create and fire event to the controller

Event e = new Event("doOperation", "+");

controller.handleEvent(e);

}

});

Button less = new Button("-1");

less.addClickHandler(new ClickHandler(){

@Override

public void onClick(ClickEvent event) {

//Create and fire event to the controller

Event e = new Event("doOperation", "-");

controller.handleEvent(e);

}

});

HorizontalPanel buttons = new HorizontalPanel();

buttons.add(add); buttons.add(less);

VerticalPanel mainPanel = new VerticalPanel();

mainPanel.add(screen);mainPanel.add(buttons);

RootPanel.get().add(mainPanel);

}

public void updateScreen(String value){

screen.setText(value);

}

@Override

public void setController(Controller controller) {

this.controller = controller;

}

}

控制层

要创建一个动作,你需要:

实施com.mvc4g.client.ActionInterface
有一个默认的构造

要执行一个动作,控制器调用的动作执行功能。它在这个功能,你需要的代码行为的行动。要更新视图,动作可以检索到控制器,由控制器调用getView功能感谢。为了获取正确的观点,行动需要给视图的名称。

例如,如果你有以下调用:

controller.getView("mainView")

以下Mvc4g配置文件:

<viewname="mainView"class="com.mvc4g.example.client.SimpleCalculatorView"/>

您将检索的有以下几种观点的实例:

com.mvc4g.example.client.SimpleCalculatorView

Action

package com.mvc4g.example.client;

import com.mvc4g.client.ActionInterface;

import com.mvc4g.client.Controller;

public class OperationAction implements ActionInterface {

private int value = 0;

@Override

public void execute(Controller controller, Object form) {

//Execute action

String operation = (String) form;

if("+".equals(operation)){

value++;

}

else if("-".equals(operation)){

value--;

}

//Update the view

((SimpleCalculatorView)controller.getView("mainView")).updateScreen(Integer.toString(value));

}

}

view

package com.mvc4g.example.client;

import com.google.gwt.event.dom.client.ClickEvent;

import com.google.gwt.event.dom.client.ClickHandler;

import com.google.gwt.user.client.ui.Button;

import com.google.gwt.user.client.ui.Composite;

import com.google.gwt.user.client.ui.HorizontalPanel;

import com.google.gwt.user.client.ui.RootPanel;

import com.google.gwt.user.client.ui.TextBox;

import com.google.gwt.user.client.ui.VerticalPanel;

import com.mvc4g.client.Controller;

import com.mvc4g.client.Event;

import com.mvc4g.client.ViewInterface;

public class SimpleCalculatorView extends Composite implements ViewInterface {

private Controller controller = null;

private TextBox screen = new TextBox();

public SimpleCalculatorView(){

screen.setWidth("50px"); screen.setEnabled(false); screen.setText("0");

Button add = new Button("+1");

add.addClickHandler(new ClickHandler(){

@Override

public void onClick(ClickEvent event) {

//Create and fire event to the controller

Event e = new Event("doOperation", "+");

controller.handleEvent(e);

}

});

Button less = new Button("-1");

less.addClickHandler(new ClickHandler(){

@Override

public void onClick(ClickEvent event) {

//Create and fire event to the controller

Event e = new Event("doOperation", "-");

controller.handleEvent(e);

}

});

HorizontalPanel buttons = new HorizontalPanel();

buttons.add(add); buttons.add(less);

VerticalPanel mainPanel = new VerticalPanel();

mainPanel.add(screen);mainPanel.add(buttons);

RootPanel.get().add(mainPanel);

}

public void updateScreen(String value){

screen.setText(value);

}

@Override

public void setController(Controller controller) {

this.controller = controller;

}

}

目录
相关文章
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
53 0
|
7月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
208 0
|
7月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
83 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
172 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
107 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
183 0
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
224 0
|
开发框架 缓存 JSON
ASP.NET Core MVC 从入门到精通之Filter
ASP.NET Core MVC 从入门到精通之Filter
186 0
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
90 0
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
178 0