我是使用JSF和primefaces的新手。 我有一个包含3个selectOneMenus的表单,它们分别由三个转换器填充。
保存数据时保存正常,但在同一表格上恢复未显示的selectOneMenu元素。尽管如果正确加载,对象也会相关。
CONVERTER
@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>
如果您需要其他信息,请告诉我。 感谢您利用时间帮助他人。