将inputText转换为JSF中的字节[]

问题描述:

我正在编写一个Web应用程序,它具有一个JSF页面,并在其后面有一个bean。我有麻烦,我认为这是因为该bean期待一个字段数组为一个特定的领域,它提供了一个字符串。根据我的理解,JSF提供了一些功能,可以自动将您在inputText字段中输入的任何内容转换为所需的数据类型,但是当您想要一个字节时,我认为它不会这样做[] ...将inputText转换为JSF中的字节[]

这仅仅是为JSF编写客户转换器的问题吗?比如像这样:

public class StringToByteArray implements Converter { 

... 

public byte[] getAsObject(FacesContext context, UIComponent component, String value) { 
    if (StringUtils.isEmpty(value)){ return null;} 

    byte[] valueAsBytes = new byte[]; 

    valueAsBytes = value.getBytes(); 

    return valueAsBytes; } } 
+0

这诚实是没有意义的。请显示视图的相关部分('')和bean(绑定到输入值的属性/ getter/setter)。还详细阐述了它应该保持什么样的信息。 – BalusC 2011-03-07 20:16:07

答案是肯定的。这只是写一个自定义转换器的问题。不要因为认为“代码太简单了”而感到气馁。以下是将自定义对象转换为字符串并返回的转换器的示例。这种转换器通常用于选择菜单:

@FacesConverter(value="merkmalConverter") 
public class MerkmalMenuConverter implements Converter { 

    public String getAsString(FacesContext context, UIComponent component, Object value) { 
     if (value != null) { 
      Merkmal m = (Merkmal) value; 
      return m.getBezeichnung(); 
     } 
     return null; // Value is null. 
    } 

    @SuppressWarnings("unchecked") 
    public Object getAsObject(FacesContext context, UIComponent component, String value) { 
     if (value != null) { 
      MerkmalJpaController mJpaC = new MerkmalJpaController(); 
      List<Merkmal> mList = mJpaC.findMerkmalEntities(); 
      for (Merkmal m : mList) { 
       if (m.getBezeichnung().equals(value)) { 
        return m; 
       } 
      } 
     } 
     return null; // Value is null or doesn't have any match. 
    } 
} 

使用您的转换器在JSF文件,如下所示作为输入域的子元素转换:

<f:converter converterId="merkmalConverter" />