gente,
consegui resolver aqui, mas acabei não postando a solução. Segue agora:
<rich:comboBox
id="entityDropDown"
defaultLabel="#{bundle['anamanRegisterServiceJSP.selectEntity']}"
width="300"
listHeight="100px"
immediate="true"
valueChangeListener="#{anamanRegisterMB.populateRefType}"
value="#{anamanRegisterMB.selectedEntity}" >
<f:selectItems
value="#{anamanRegisterMB.entities}" />
<a4j:support
event="onchange"
reRender="typeDropDown"
immediate="true" />
</rich:comboBox>
e no managed bean:
public void populateRefType(ValueChangeEvent event) {
if (event != null) {
AnamanRegister e = new AnamanRegister();
e.setRegisterEntity((String) event.getNewValue());
selectedEntity = e.getRegisterEntity();
}
//selectedEntity = (String) event.getNewValue();
//System.out.println("cheguei aqui: " + selectedEntity );
FacesContext.getCurrentInstance().renderResponse();
}
Ainda estou estudando como formatar o label do SelectItem(Object value,
String label).
Minha idéia é que o valor que apareça no combo seja uma composição de
Strings, algo como:
String label = "100.0000" +" - " + " Blah"
Onde "100.0000" e "Blah" são valores que vêm do banco, mas o "Blah" uso
parâmetro de filtro no próximo combo.
Quando deixo assim:
public List<SelectItem> getRefTypes() {
List<SelectItem> refTypes = new ArrayList<SelectItem>();
System.out.println("selectedEntity-MB for refTypeList: " +
selectedEntity);
List<AnamanRegister> rTLBE =
ars.getRegisterRefTypeListByEntity(selectedEntity);
for (AnamanRegister rType : rTLBE) {
if (rType.getIdRegister() != 0
&&
rType.getRegisterArea().equalsIgnoreCase("registerarea")) {
String refLabel = rType.getRegisterRef();
String typeLabel = rType.getRegisterType();
String displayLabel = refLabel + " - " + typeLabel;
System.out.println(displayLabel);
refTypes.add(new SelectItem((String)typeLabel,
displayLabel));
}
}
return refTypes;
}
só aparece o "Blah".
O que é melhor? Tratar isso no managed bean (por exemplo no método
chamado pelo comboBox durante o valueChangeEvent? Ou implementar isso
via conversor? Estou tentando evitar uso de conversores...
Obrigado,
Gustavo
Daniel@LG wrote:
> Me corrijam seu estiver enganado, mas nao faltou o Supporte do Ajax?
> eu faço assim:
> <h:selectOneMenu id="productCatId" value="#
> {ServiceOrderBean.serviceOrderVO.productCatId}" style="width:270px;"
> immediate="true" required="true" >
> <f:selectItem itemValue="" itemLabel="..." />
> <f:selectItems value="#{ServiceOrderBean.myProductCategory}" />
> <a4j:support id="listaCategoria" event="onchange"
> reRender="productSegment,messagesId" />
> </h:selectOneMenu>
> Abracos!