I have a property within a data model, that property must have a value constrained from a type know and defined as a class.
The constraints values defined by the following type and the allowedValues/allowedLabels list are filled
package com.ds.ui.constraints;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javax.faces.model.SelectItem;
import org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint;
import org.apache.log4j.Logger;
import com.ds.ui.bean.dialog.util.BeanUtil;
public class PositionPermissionsConstraints extends ListOfValuesConstraint
implements Serializable {
public void initialize(){
LOG.debug("PositionPermissionsConstraints Initializer");
super.setCaseSensitive(false);
preparePermissionList();
}
public void preparePermissionList(){
ResourceBundle bundle = ResourceBundle.getBundle(BeanUtil.RESOURECE_BUNDLE);
List<String> av = new ArrayList<String>();
av
.add(PositionPermissionsConstraints.
CREATE_ORGANIZATION_PERMISSION);
this.allowedLabels
.add(bundle.getString(CREATE_ORGANIZATION_PERMISSION));
av
.add(PositionPermissionsConstraints.
UPDATE_ORGANIZATION_PERMISSION);
this.allowedLabels
.add(bundle.getString(UPDATE_ORGANIZATION_PERMISSION));
av
.add(PositionPermissionsConstraints.
DELETE_ORGANIZATION_PERMISSION);
this.allowedLabels
.add(bundle.getString(DELETE_ORGANIZATION_PERMISSION));
av
.add(PositionPermissionsConstraints.
CREATE_ROOT_POSITION_PERMISSION);
this.allowedLabels
.add(bundle.getString(CREATE_ROOT_POSITION_PERMISSION));
av
.add(PositionPermissionsConstraints.
MANAGE_ROOT_POSITION_PERMISSION);
this.allowedLabels
.add(bundle.getString(MANAGE_ROOT_POSITION_PERMISSION));
av
.add(PositionPermissionsConstraints.
CREATE_SUBORDINATE_POSITION_PERMISSION);
this.allowedLabels
.add(bundle.getString(CREATE_SUBORDINATE_POSITION_PERMISSION));
av
.add(PositionPermissionsConstraints.
UPDATE_SUBORDINATE_POSITION_PERMISSION);
this.allowedLabels
.add(bundle.getString(UPDATE_SUBORDINATE_POSITION_PERMISSION));
av
.add(PositionPermissionsConstraints.
DELETE_SUBORDINATE_POSITION_PERMISSION);
this.allowedLabels
.add(bundle.getString(DELETE_SUBORDINATE_POSITION_PERMISSION));
av
.add(PositionPermissionsConstraints.
MANAGE_POSITION_PERMISSION);
this.allowedLabels
.add(bundle.getString(MANAGE_POSITION_PERMISSION));
av
.add(PositionPermissionsConstraints.
ASSIGN_POSITION_TO_USER_PERMISSION);
this.allowedLabels
.add(bundle.getString(ASSIGN_POSITION_TO_USER_PERMISSION));
this.setAllowedValues(av);
this.setAllowedLabels(allowedLabels);
}
public List<SelectItem> prepareSelectItemsList(){
ResourceBundle bundle = ResourceBundle.getBundle(BeanUtil.RESOURECE_BUNDLE);
List<SelectItem> selectItems = new ArrayList<SelectItem>();
for(String value : getAllowedValues()){
SelectItem selectItem = new SelectItem(value,bundle.getString(value));
selectItems.add(selectItem);
}
return selectItems;
}
private static final String CREATE_ORGANIZATION_PERMISSION = "CREATE_ORGANIZATION";
private static final String UPDATE_ORGANIZATION_PERMISSION = "UPDATE_ORGANIZATION";
private static final String DELETE_ORGANIZATION_PERMISSION = "DELETE_ORGANIZATION";
private static final String CREATE_ROOT_POSITION_PERMISSION = "CREATE_ROOT_POSITION";
private static final String MANAGE_ROOT_POSITION_PERMISSION = "MANAGE_ROOT_POSITION";
private static final String CREATE_SUBORDINATE_POSITION_PERMISSION = "CREATE_SUBORDINATE_POSITION";
private static final String UPDATE_SUBORDINATE_POSITION_PERMISSION = "UPDATE_SUBORDINATE_POSITION";
private static final String DELETE_SUBORDINATE_POSITION_PERMISSION = "DELETE_SUBORDINATE_POSITION";
private static final String MANAGE_POSITION_PERMISSION = "MANAGE_POSITION";
private static final String ASSIGN_POSITION_TO_USER_PERMISSION = "ASSIGN_POSITION_TO_USER";
private List<String> allowedLabels = new ArrayList<String>();
private static final long serialVersionUID = 1L;
private static Logger LOG = Logger.getLogger(PositionPermissionsConstraints.class);
public List<String> getAllowedLabels() {
return allowedLabels;
}
public void setAllowedLabels(List<String> allowedLabels) {
this.allowedLabels = allowedLabels;
}}
As you see the allowedValues/labels are filled but once i correlate the property with this constraint by using model definition itself the values are seeing rather than values and labels.
labels are multi lingual as you can see, so how can i enforce the labels to be displayed and how can i enforce the multi lingual.
May be i need to develop a new component generators !
Please, can any one guide me by a clear steps.
thanks
Mohammed Amr
Within Alfresco, if you define a normal constraint list, only the value will be displayed.
What Alfresco does in the generator/renderer is make a HTML
Each constraint will get presented as
<option value=${value}>${value}</option>Thus if you really want to create a list with different value and different labels, you need to create your own Generator + Renderer.
You could use the default as an example and build upon it.
You need to output
<option value=${value}>${label}</option>