I've solved my problem for now subclassing org.primefaces.model.menu.BaseMenuModel like this:
public class MyDefaultMenuModel extends BaseMenuModel {
private boolean generated = false;
@Override
public void generateUniqueIds() {
if(!generated) {
generateUniqueIds(getElements(), "_");
generated = true;
}
}
private void generateUniqueIds(List<MenuElement> elements, String seed) {
if(elements == null || elements.isEmpty()) {
return;
}
int counter = 0;
for(MenuElement element : elements) {
String id = (seed == null) ? String.valueOf(counter++) : seed + "_" + counter++;
element.setId(id);
if(element instanceof MenuGroup) {
generateUniqueIds(((MenuGroup) element).getElements(), id);
}
}
}
}
id validation in mojarra doesnt allow ids starting with numbers
I've oppened and issue related to the problem Issue 6187