2014-01-13 2 views
0

Интересно, должно ли быть возможно добавить атрибут к компоненту внутри конвертера? Поэтому внутри getAsString я бы использовал uiComponent.addAttribute(). Для меня это работает на 50%, начальное значение задано, но когда конвертер вызывается позже, устанавливая новое значение, начальное значение все еще извлекается.Добавить атрибут динамически к компоненту в конвертере?

ответ

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; 
    } 
} 
+0

ОК, это будет работать. Раздражает необходимость добавлять этот атрибут везде. Нет ли способа заставить его работать без необходимости постоянно манипулировать лицом? – KTrum

+0

вы слишком много притворяетесь от jsf;) –

Смежные вопросы