How to show Custom validation on vaadin on field level

Hi all, I ahve a page with some fields and a table and a create button

here i wanted to validate some fields like

  1. noty empty condition
  2. cross field validations

I have tried, but i can only able to achive to show the validation messages In Notification, but i wanted to show all the validation at the field level.
and im not understand how we can validate the field value with one of the table column value.

here is my code …

my View Class

public class TransportRequestEditView extends BaseView {

@Autowired
TransportRequestDelegate transportRequestDelegate;

FieldGroup group;
BeanItem<TransportRequestEditVO> item;
TransportRequestEditVO trEditVO;
List<TransportRequestEditVO> transportItemUnitVOs = new ArrayList<TransportRequestEditVO>();
private String houseBill;
private String billingNo;
private String customer;

@Override
public Component getMainContent(ViewChangeListener.ViewChangeEvent event) {
trEditVO = transportRequestDelegate.getTrEditVO();
item = new BeanItem<TransportRequestEditVO>(trEditVO);
group = new FieldGroup(item);

VerticalLayout trLayout = new VerticalLayout();
FormLayout generalInfoLayout1 = new FormLayout();

final Field<?> houseBill = group.buildAndBind("houseBill");
houseBill.setRequired(true);
houseBill.setRequiredError("Please enter house bill no");

houseBill.addValidator(new Validator() {
@Override
public void validate(Object value) throws InvalidValueException {
if (!(value instanceof String && ((String) value).equals("")))
throw new InvalidValueException("Please enter house bill no");
} });
// wich is not showing the error message icon on the field level even if it is empty

generalInfoLayout1.addComponent(houseBill);
BeanItemContainer mappedCustomerContainer = new BeanItemContainer(trEditVO.getMappedCustomers());
final ComboBox customersCombo = new ComboBox("Customer (mapped)", mappedCustomerContainer);
customersCombo.setRequired(true); customersCombo.setRequiredError("Please select Customer");
customersCombo.setValue(trEditVO.getMappedCustomer());

customersCombo.addValueChangeListener(new Property.ValueChangeListener() {
@Override
public void valueChange(Property.ValueChangeEvent valueChangeEvent) {
AbstractSelect combo = (AbstractSelect) valueChangeEvent.getProperty();
String company = (String) combo.getValue(); trEditVO.setMappedCustomer(company);
} });

generalInfoLayout1.addComponent(customersCombo);
trLayout.addComponent(generalInfoLayout1);
HorizontalLayout fromToHL = new HorizontalLayout();
VerticalLayout fromVL = new VerticalLayout();

FormLayout fromLayout = new FormLayout();

PopupDateField pickUp = new PopupDateField("Pick Up");
pickUp.setDateFormat(" dd/MM/yyyy HH:MM ");
pickUp.setResolution(PopupDateField.RESOLUTION_HOUR);
pickUp.setResolution(PopupDateField.RESOLUTION_MIN);
group.bind(pickUp,"pickUp");
fromLayout.addComponent(pickUp);
fromVL.addComponent(fromLayout);
fromToHL.addComponent(fromVL);
VerticalLayout toVL = new VerticalLayout();

FormLayout toFL = new FormLayout();

PopupDateField inlandArrival = new PopupDateField("Inland Arrival");
inlandArrival.setDateFormat(" dd/MM/yyyy HH:MM ");
inlandArrival.setResolution(PopupDateField.RESOLUTION_HOUR);
inlandArrival.setResolution(PopupDateField.RESOLUTION_MIN);
group.bind(inlandArrival,"inlandArrival");
toFL.addComponent(inlandArrival);

toVL.addComponent(toFL);
fromToHL.addComponent(toVL);
trLayout.addComponent(fromToHL);
transportItemUnitVOs.add(trEditVO);

Table table = new Table();
final BeanItemContainer<TransportRequestEditVO> container =
    new BeanItemContainer<TransportRequestEditVO>(TransportRequestEditVO.class, transportItemUnitVOs);
table.setContainerDataSource(container);
table.setVisibleColumns( new Object[] {"containerNo" , "containerSealNo1" });
table.setColumnHeaders( new String[] {"ContainerNo" , "ContainerSealNo1" });
table.setImmediate(true); table.setEditable(true);

trLayout.addComponent(table);
Button createTrBtn = new Button();
createTrBtn.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent clickEvent) {
try {
group.commit();
transportRequestDelegate.createOrUpdateTr(trEditVO); }
catch (FieldGroup.CommitException e) {
e.printStackTrace(); } }
});

createTrBtn.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent clickEvent) {
try {
houseBill.validate();
customersCombo.validate();
//here i want to check the container no and house bill field validation

} catch (Validator.InvalidValueException e) {

Notification.show(e.getMessage()); } } });
trLayout.addComponent(createTrBtn);
return trLayout;
}
}

Here is my Vo class

[code]
public class TransportRequestEditVO implements Serializable {

private String houseBill; private List mappedCustomers;
private String mappedCustomer;
private Date pickUp;
private Date inlandArrival;
private String containerNo;
private String containerSealNo1;
//getters setters }
[/code]could some one suggest me a good example to show the validation messages in vaadin, i havelooked into some forums but I did not get the exact solution how to show the all validation at a time on the field level.

Thanks in advance!
Kiran.