带转换器的 OutputText 不起作用 - 为什么?
OutputText with Converter does not work - why?
我正在尝试转换 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>
转换器类:
@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-class:
@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);
}
}
我正在尝试使用 <h:inputtext/>
将字符串输入 Bean 属性 name
并使用 <h:outputtext/>
打印出来,但使用 TextToStringConverter
进行转换。但是转换器似乎永远不会被调用 - 我错过了什么吗?
您为输出文本定义了转换器。因此,应该调用 getAsString()
方法。您在此方法中没有 System.out.println
。也许这就是您认为未调用转换器的原因。
代码对我来说似乎是正确的。
我正在尝试转换 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>
转换器类:
@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-class:
@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);
}
}
我正在尝试使用 <h:inputtext/>
将字符串输入 Bean 属性 name
并使用 <h:outputtext/>
打印出来,但使用 TextToStringConverter
进行转换。但是转换器似乎永远不会被调用 - 我错过了什么吗?
您为输出文本定义了转换器。因此,应该调用 getAsString()
方法。您在此方法中没有 System.out.println
。也许这就是您认为未调用转换器的原因。
代码对我来说似乎是正确的。