0
我在我的应用程序中使用PrimeFaces 5.1我使用高级下拉菜单来显示学生名称。我的问题是如果同一高级下拉选项用于教授,职员和部门详细信息。现在我对每个转换器使用单独的类,只需修改转换器动态更改类名称
**Object value1 =resolver.getValue(facesContext.getELContext(), null, "Student");
Student service = (Student) value1;**
line。 我的疑问是如何替换类名以便为所有转换器动态使用它?
XHTML
<p:selectOneMenu value="#{Student.studentName}" var="bean"
converter="StudentConvertor" >
<f:selectItems value="#{Student.studentNameList}" var="stuVar"
itemLabel="#{stuVar.studName}" itemValue="#{stuVar}"/>
<p:column>
<h:outputText value="#{bean.studName}"/>
</p:column>
<p:ajax event="change" update="studentPanel"
listener="#{Student.studentChangeAction}"/>
</p:selectOneMenu>
的Java
public class StudentConvertor implements Converter
{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value)
{
if ((value != null) && (value.trim().length() > 0))
{
try
{
FacesContext facesContext = FacesContext.getCurrentInstance();
ELResolver resolver = facesContext.getApplication().getELResolver();
Object value1 = resolver.getValue(facesContext.getELContext(), null, "Student");
Student service = (Student) value1;
if (service != null)
{
for (Integer studentId : service.getStudentNameList())
{
if (Integer.parseInt(value) == studentId)
{
return studentId;
}
}
}
return null;
}
catch (NumberFormatException e)
{
throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid value."));
}
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value)
{
if (value != null)
{
return String.valueOf(((String) value).getStudentId());
}
return null;
}
}