0

我是使用 JSF 和 primefaces 的新手。我有一个包含 3 个 selectOneMenus 的表单,它们分别由三个转换器填充。

保存数据时保存得很好,但是当在同一个表单上恢复未显示的 selectOneMenu 元素时。虽然如果正确加载对象相关。

转换器

@FacesConverter(value = "auxiliarConvertir")
public class AuxiliarConvertir implements Converter {

    public static AuxiliarDao auxiliarDAO = new AuxiliarDaoImpl();
    private AuxiliarMB auxiliarMB;

    @Override
    public Object getAsObject(FacesContext facesContext, UIComponent component,
            String submittedValue) {
        if (submittedValue.trim().equals("")) {
            return null;
        } else {
            try {
                auxiliarMB = (AuxiliarMB) facesContext
                        .getELContext()
                        .getELResolver()
                        .getValue(facesContext.getELContext(), null,
                                "auxiliarBean");

                List<Auxiliar> listaAuxiliar = auxiliarMB.getTabla();
                String number = submittedValue;
                for (Auxiliar p : listaAuxiliar) {
                    if (p.getAuxiliarCodigo().equals(number)) {
                        return p;
                    }
                }

            } catch (NumberFormatException exception) {
                throw new ConverterException(new FacesMessage(
                        FacesMessage.SEVERITY_ERROR, "Conversion Error",
                        "Not a valid player"));
            }
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext facesContext, UIComponent component,
            Object value) {
        if (value == null || value.equals("")) {
            return "";
        } else {
            return String.valueOf(((Auxiliar) value).getAuxiliarCodigo());
        }
    }

}

XHTML

<p:column colspan="2">
    <p:selectOneMenu id="auxiliares"
        value="#{comprasBean.auxiliar}" converter="auxiliarConvertir"
        panelStyle="width:550px" effect="fade" var="p"
        style="width:95px" filter="true" filterMatchMode="startsWith">
        <p:ajax update="razonSocial" listener="#{comprasBean.pinta}" />
        <f:selectItem itemLabel="Elija" itemValue="" />
        <f:selectItems value="#{auxiliarBean.tabla}" var="auxi"
            itemLabel="#{auxi.auxiliarCodigo}" itemValue="#{auxi}" />
        <p:column>
             #{p.auxiliarCodTribut}
        </p:column>
        <p:column> 
             #{p.auxiliarRazonSocial} #{p.auxiliarApellidoP} #{p.auxiliarApellidoM} #{p.auxiliarNombre1}
        </p:column>
    </p:selectOneMenu>
</p:column>

如果您需要其他信息,请告诉我。感谢您花时间帮助他人。

4

0 回答 0