Доступ к атрибутам valueExpression в ManagedBean - PullRequest
0 голосов
/ 22 октября 2018

У меня есть пользовательский тег facelet, который просто включает в себя outputText.Причиной использования пользовательского тега является изменение значения в зависимости от поля объекта.Например: если outputText используется для процентного значения, я хочу напечатать значение с% без необходимости добавления его клиентом

Моя проблема заключается в том, как получить доступ к выражению значения атрибутов в компоненте поддержки

<f:attribute name="value" value="#{value}" />    

<h:outputText value="#{outputBean.value}"></h:outputText>

В бобе

public String getValue() {
    //ValueExpression valueExpression =     Read the page attributes and get the value expression of attribute "value"
    // String value =   set the value according to the value expression after necessary modifications

    return value;
}  

1 Ответ

0 голосов
/ 23 октября 2018

Вы хотите получить ValueExpression # {value} из компонента f: attribute?Было бы проще не искать в представлении, а просто добавить атрибут и проверить компонент h: outputText и присвоить атрибуту специальное уникальное имя:

XHTML-фрагмент:

<h:outputText value="#{myBean.value}" >
    <f:attribute name="tofuwurst" value="#{chunk}"/>
</h:outputText>

MyBean.java:

import javax.el.ValueExpression;
import javax.enterprise.context.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.inject.Named;

@Named
@RequestScoped
public class MyBean {
    private Object value;

    public Object getValue() {
        FacesContext context = FacesContext.getCurrentInstance();
        UIComponent currentComponent = UIComponent.getCurrentComponent(context);
        ValueExpression veTofuwurst = currentComponent.getValueExpression("tofuwurst");
        assert null != veTofuwurst;
        // have fun with a #{chunk} of Tofuwurst here

        return value;
    }

    public void setValue(Object value) {
        this.value = value;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...