@Override public Boolean isRequired() { if (component instanceof Field) { return ((Field) component).isRequired(); } return targetRequired; }
@Override public void initFrame() { for (Component c : frame.getComponents()) { if (c instanceof Field) { Field field = (Field) c; if (field.isRequired() && StringUtils.isBlank(field.getRequiredMessage()) && StringUtils.isBlank(field.getCaption())) { field.setRequiredMessage(getDefaultRequiredMessage(wizard.getMessage(field.getId()))); } } } } }
protected void loadRequired(Field component, Element element) { String required = element.attributeValue("required"); if (StringUtils.isNotEmpty(required)) { component.setRequired(Boolean.parseBoolean(required)); } String requiredMessage = element.attributeValue("requiredMessage"); if (requiredMessage != null) { component.setRequiredMessage(loadResourceString(requiredMessage)); } else if (component.isRequired() && component.getDatasource() != null) { MetaPropertyPath propertyPath = component.getMetaPropertyPath(); String defaultRequiredMessage = getMessageTools() .getDefaultRequiredMessage(propertyPath.getMetaClass(), propertyPath.toString()); component.setRequiredMessage(defaultRequiredMessage); } }
/** * Set field's "required" flag to false if the value has been filtered by Row Level Security * This is necessary to allow user to submit form with filtered attribute even if attribute is required */ public static void handleFilteredAttributes(Field component, Datasource datasource, MetaPropertyPath mpp) { if (component.isRequired() && datasource.getState() == Datasource.State.VALID && datasource.getItem() != null && mpp.getMetaProperty().getRange().isClass()) { Entity targetItem = datasource.getItem(); MetaProperty[] propertiesChain = mpp.getMetaProperties(); if (propertiesChain.length > 1) { String basePropertyItem = Arrays.stream(propertiesChain) .limit(propertiesChain.length - 1) .map(MetadataObject::getName) .collect(Collectors.joining(".")); targetItem = datasource.getItem().getValueEx(basePropertyItem); } if (targetItem instanceof BaseGenericIdEntity) { String metaPropertyName = mpp.getMetaProperty().getName(); Object value = targetItem.getValue(metaPropertyName); BaseGenericIdEntity baseGenericIdEntity = (BaseGenericIdEntity) targetItem; String[] filteredAttributes = getFilteredAttributes(baseGenericIdEntity); if (value == null && filteredAttributes != null && ArrayUtils.contains(filteredAttributes, metaPropertyName)) { component.setRequired(false); } } } }
protected CubaEditorField createCustomField(final Field columnComponent) { if (!(columnComponent instanceof Buffered)) { throw new IllegalArgumentException("Editor field must implement " + "com.haulmont.cuba.gui.components.Buffered"); } Component content = WebComponentsHelper.getComposition(columnComponent); //noinspection unchecked CubaEditorField wrapper = new DataGridEditorCustomField(columnComponent) { @Override protected Component initContent() { return content; } }; if (content instanceof Component.Focusable) { wrapper.setFocusDelegate((Component.Focusable) content); } wrapper.setReadOnly(!columnComponent.isEditable()); wrapper.setRequiredIndicatorVisible(columnComponent.isRequired()); //noinspection unchecked columnComponent.addValueChangeListener(event -> wrapper.markAsDirty()); return wrapper; } }
editField.setWidth(fieldWidth); boolean required = editField.isRequired();