2016-09-18 71 views
0

我試着轉換一個的outputText - 簡單地說:帶轉換器的OutputText不起作用 - 爲什麼?

<h:form> 
    <h:inputText value="#{someBean.name}"/> 
    <h:outputText value="#{someBean.name}" converter="com.java.ee.jsf.TextToStringConverter"/> 
    <h:commandButton value="submit" action="#{someBean.doSecond()}"/> 
</h:form> 

ConverterClass:

@FacesConverter("com.java.ee.jsf.TextToStringConverter") 

    public class TextToStringConverter implements Converter { 

     @Override 
     public Object getAsObject(FacesContext context, UIComponent component, String value) { 
      System.out.println("String: " + component); 
      return value; 
     } 

     @Override 
     public String getAsString(FacesContext context, UIComponent component, Object value) { 
      return (String) value; 
     } 

    } 

SomeBean級:

@Model 
public class SomeBean { 

    private String name; 
    private int id; 
    private Double someNumber; 
    private Date someDate; 

blic int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public Double getSomeNumber() { 
     return someNumber; 
    } 

    public void setSomeNumber(Double someNumber) { 
     this.someNumber = someNumber; 
    } 

    public Date getSomeDate() { 
     System.out.println(someDate); 
     return someDate; 
    } 

    public void setSomeDate(Date someDate) { 
     this.someDate = someDate; 
    } 

public void doSecond() { 
     System.out.println("doSecond"); 
     System.out.println("name: " + name); 
     System.out.println("id: " + id); 
     System.out.println("someNumber: " + someNumber); 
    } 
} 

我試着輸入一個字符串轉換成Bean屬性name<h:inputtext/>並打印出來與<h:outputtext/>,但與TextToStringConverter轉換。但轉換器似乎從來沒有被調用 - 我錯過了什麼?

回答

1

您爲轉換器定義了輸出文本。因此,應該調用getAsString()方法。此方法中沒有System.out.println。也許這就是你認爲轉換器沒有被調用的原因。

該代碼似乎對我來說是正確的。