1

私は持っている

public class ExtendedBeanELResolver extends BeanELResolver {
private static final Pattern regExpDn = Pattern.compile("PLMN-PLMN/\\w+.\\d+(.*)");
@Override
public Object getValue(ELContext context, Object base, Object property)
   try {

    // remake DIST.NAME appearance
    if (property.equals("dn") && base instanceof Alarm && ((Alarm) base).getCustomer().getNameEng().equalsIgnoreCase("mts")) {

    String dn = null;
    try {
        dn = ((Alarm) base).getDn();
        Matcher mtch = regExpDn.matcher(dn);
        mtch.find();
        ((Alarm) base).setDn(mtch.group(1));
    } catch (Throwable e) {
        // logger.error("error in dn - " + dn);
    } finally {
        return super.getValue(context, base, property);
    }
    }
}

いくつかの条件に応じて、オブジェクトの一部の表示値を変更します。これがjsfから呼び出された場合、値を変更したくありません<ui:param name="fullDistName" value="#{alarm.dn}" /> 。このELが呼び出されたコンポーネントのIDを取得するにはどうすればよいですか? 私の英語でごめんなさい。

4

1 に答える 1

0

プログラムで評価する#{component}か、 を呼び出すことによって、現在の JSF コンポーネントを取得できますUIComponent#getCurrentComponent()

UIComponent component = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance();
// ...

これにより、EL リゾルバーが JSF に密結合されることに注意してください。

于 2013-02-14T11:17:47.340 に答える