我想知道是否应该可以为转换器内的组件添加属性?所以在getAsString中我会使用uiComponent.addAttribute()。这对我来说似乎有50%的作用,设置了初始值,但是当稍后调用转换器设置新值时,仍然会检索初始值。
答案 0 :(得分:1)
你不应该这样做,因为它打破了职责分离。你应该使用bean或scope属性。
但也许这适合:
<h:inputText value="#{bean.someValue}" converter="#{bean}">
<f:attribute name="attrName" value="#{bean.attrValue}"/>
</h:inputText>
和
@ManagedBean
public class Bean implements Converter
{
private String someValue;
private String attrValue;
@Override
public String getAsString(FacesContext context, UIComponent component, Object value)
{
attrValue = "uppercase";
return someValue.toUpperCase();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value)
{
attrValue = "lowercase";
return value.toLowerCase();
}
public String getSomeValue()
{
return someValue;
}
public void setSomeValue(String someValue)
{
this.someValue = someValue;
}
public String getAttrValue()
{
return attrValue;
}
public void setAttrValue(String attrValue)
{
this.attrValue = attrValue;
}
}