动态添加属性到转换器中的组件?

时间:2014-01-13 07:25:49

标签: jsf-2

我想知道是否应该可以为转换器内的组件添加属性?所以在getAsString中我会使用uiComponent.addAttribute()。这对我来说似乎有50%的作用,设置了初始值,但是当稍后调用转换器设置新值时,仍然会检索初始值。

1 个答案:

答案 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;
    }
}