获取选择对象SelectOneMenu PrimeFaces

时间:2014-10-29 20:02:37

标签: object select primefaces get selectonemenu

我可以帮助我知道如何获取所选对象


XHTML:

<p:selectOneRadio id="selection" value="#{miCurso.respuestaDTO}">
    <f:selectItems value="#{pregunta.respuestas}" var="respuesta" itemLabel="#{respuesta.respuesta}"  itemValue="#{respuesta}" />                               
</p:selectOneRadio>

我想让整个对象不仅仅是itemLabel

1 个答案:

答案 0 :(得分:0)

<p:selectOneRadio id="selection" value="#{miCurso.respuestaDTO}" converter="clientesConverter">
<f:selectItems value="#{pregunta.respuestas}" var="respuesta" itemLabel="#{respuesta.respuesta}"  itemValue="#{respuesta}" />                               

用于selectoneradio的

转换器:

package JSF_Converters;

@FacesConverter(value = "clientesConverter")
public class ClientesConverter implements Converter {

@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
    if (arg2 == null || arg2.equals("")) {
        return "";
    }
    if (arg0 == null) {
        throw new NullPointerException("context");
    }
    if (arg1 == null) {
        throw new NullPointerException("component");
    }
    return ((EmpresaClienteUtil) arg2).getCodigo();
}

@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
    if (arg2.trim().equals("")) {
        return null;
    }
    if (arg0 == null) {
        throw new NullPointerException("context");
    }
    if (arg1 == null) {
        throw new NullPointerException("component");
    }
    FacesContext ctx = FacesContext.getCurrentInstance();
    ValueExpression vex = ctx.getApplication().getExpressionFactory().createValueExpression(ctx.getELContext(), "#{comunMB}", ComunMB.class);
    ComunMB items = (ComunMB) vex.getValue(ctx.getELContext());
    EmpresaClienteUtil item;
    try {
        item = items.getItemClientes(arg2); 
    } catch (Exception e) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Valor desconocido", "El valor es desconocido!");
        throw new ConverterException(message + e.getMessage());
    }
    if (item == null) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Valor desconocido", "El valor es desconocido!");
        throw new ConverterException(message);
    }
    return item;
}

}

ComunMB

package ManagedBean;


@Named(value = "comunMB")
@ApplicationScoped
public class ComunMB {

public ComunMB() {
}

private HashMap<String, EmpresaClienteUtil> myHPClientes = new HashMap<String,EmpresaClienteUtil>();

public EmpresaClienteUtil getItemClientes(String clave) {
    return (EmpresaClienteUtil) myHPClientes.get(clave);
}

}