自定义转换器无法正常工作

时间:2015-09-08 18:44:43

标签: jsf jsf-2 primefaces converter selectonemenu

<p:selectOneMenu value="#{schoolBean.newContactTO.contactType}" converter="contacttypeconverter">
	<f:selectItem itemLabel="select type"></f:selectItem>
	<f:selectItems  value="#{schoolBean.contactTypesConstant.data}" var="contacttype" itemLabel="#{contacttype.type}" itemValue="#{contacttype}"></f:selectItems>
</p:selectOneMenu>
<p:commandButton value="submit" actionListener="#{schoolBean.saveNewContactTO}"></p:commandButton>

我在PrimeFaces中为SelectOneMenu使用自定义转换器。转换器适用于getAsString(),但对于getAsObject,我不确定出了什么问题。 在这之后,primefaces UI就会被绞死,从此以后没有任何东西可以像我正在使用对话框一样,之后它就不起作用了。

这是我的自定义转换器文件:

@FacesConverter("contacttypeconverter")
public class ContactTypeConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component,String type) {
    ContactTypeTO result=null;
        System.out.println("type:"+type);
         if(component instanceof SelectOneMenu){
                    result = new ContactTypeTO();
                    result.setType(""+type);
                    System.out.println("result:"+result);
         }  
        System.out.println(""+result.getType());
    return result;
}
@Override
public String getAsString(FacesContext context, UIComponent component,Object value) {
    String result = "";
    if( value instanceof ContactTypeTO){
        result = ((ContactTypeTO)value).getType();  
    }
    return result;
}}

以下是ContactTypeTO

public class ContactTypeTO {

private String type;

  public String getType() {
     return type;
  }

  public void setType(String type) {
     this.type = type;
  }
}
  

schoolBean.newContactTO.contactType的类型为ContactTypeTO(如上所述)

在getAsObject中,我返回一个新的ContactTypeTO对象,但我无法弄清楚为什么转换器无法将值分配给SelectOneMenu中的schoolBean.newContactTO.contactType。 提交后,saveNewContactTO不会执行。 getAsObject方法根据需要执行,结果变量在返回时也有适当的数据。  我认为转换时存在一些问题,但我无法弄明白。

0 个答案:

没有答案