DBILITY

vaadin fieldGroup 사용하기 본문

front-end & ui/vaadin legacy

vaadin fieldGroup 사용하기

DBILITY 2018. 6. 28. 20:33
반응형

위지윅을 지원하는 IDE 툴에서 Text, Combo 등의 컴포넌트 또는 컨트롤에 데이터를 바인딩할 때처럼

데이터 소스를 연결(setItemDataSource)하고 각 컴포넌트에 할당하는 데이터 프로바이더 정도로 생각하면 되려나?

 

TextField userid = new TextField("ID");
FieldGroup fieldGroup = new FieldGroup();
fieldGroup.bind(userid,"userid");

/* 위처럼 개별 필드별로 처리하거나,
    아래처럼 선언된 필드를 한꺼번에 바인딩할 수도 있다.*/
public class MyFieldGroup {

    FieldGroup fieldGroup;
    TextField userid;

    public MyFieldGroup() {
        fieldGroup = new FieldGroup();
        fieldGroup.bindMemberFields(this);
    }
}

 

다음은 javaBean(User.class)을 사용하여 TextFiled에 bind 하고 수정한 후 반영(Commit)하는 경우로

userid가 짱구에서 흰둥이로 변경된다.

filedGroup.discard() 호출시 취소된다.

 

package com.dbility.apps.erp;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.vaadin.data.fieldgroup.BeanFieldGroup;
import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
import com.vaadin.data.util.BeanItem;
import com.vaadin.ui.TextField;

public class MyFieldGroup {

	private static final Logger logger = LoggerFactory.getLogger(MyFieldGroup.class);

	BeanFieldGroup<User> fieldGroup;
	TextField userid;

	public MyFieldGroup() {

		userid = new TextField("ID");

		User item = new User("짱구");
		fieldGroup = new BeanFieldGroup<>(User.class);
		fieldGroup.bindMemberFields(this);
		fieldGroup.setItemDataSource(new BeanItem<User>(item));
		userid.setValue("흰둥이");
		try {
			fieldGroup.commit();
			//fieldGroup.discard();
		} catch (CommitException e) {
			e.printStackTrace();
		}

		User itemAfter = fieldGroup.getItemDataSource().getBean();
		logger.debug("{}", itemAfter.getUserid());

	}

	public class User {

		private String userid;

		public User(String userid) {
			this.userid=userid;
		}

		public String getUserid() {
			return userid;
		}

		public void setUserid(String userid) {
			this.userid = userid;
		}

	}

	public static void main(String[] args) {
		MyFieldGroup myFieldGroup = new MyFieldGroup();
	}

}

 

실행결과

21:10:39.637 DEBUG        com.dbility.apps.MyFieldGroup -  35 - 흰둥이

 

반응형

'front-end & ui > vaadin legacy' 카테고리의 다른 글

vaadin file upload  (0) 2018.06.28
vaadin Sub-Window 사용하기  (0) 2018.06.28
크롬 브라우저 캐시 불능 처리  (0) 2018.06.27
vaadin Layout 수동 교체?  (0) 2018.06.18
vaadin Navigator 실습  (0) 2018.06.18
Comments