2011-03-07 92 views
1

我正在編寫一個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

回答

2

答案是肯定的。這只是寫一個自定義轉換器的問題。不要因爲認爲「代碼太簡單了」而感到氣餒。以下是將自定義對象轉換爲字符串並返回的轉換器的示例。這種轉換器通常用於選擇菜單:

@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" />