2013-09-24 7 views
3

Я работаю с JSF и PrimeFaces, но мне нужно получить значение id компонента. Поскольку я строю динамические панели с разным идентификатором, чтобы показать панель, мне нужно сравнить, является ли текущая панель, а затем показать ее.Как получить идентификатор текущего компонента в EL

Например, если я имею следующую панель

<p:outputPanel id="#{bean.getID}" autoUpdate="true" 
    renderer=#{@this.id == bean.currentPanel} 
> 
</p:outputPanel> 

И Bean

public class Bean(){ 
    private int numberPanels =0; 
    private int currentPanel = 0; 

    public int getID(){ 
    //...a process that return different ID 
    } 
    // getter's and setters 

}

Очевидно, что @this.id не работает. Итак, как получить значение идентификатора компонента ne JSF с помощью PrimeFaces?

+0

Во-первых, вы должны использовать '# {bean.ID}' вместо '# {bean.getID}'. Во-вторых, вы не должны иметь бизнес-логику в своих методах getters, см. [Здесь] (http://stackoverflow.com/q/2090033/1065197) (если вы все еще настаиваете на размещении бизнес-логики в геттере, не жалуйтесь на проблемы с производительностью позже = \\). На вопрос, я думаю, вы можете динамически связывать '' , Я не тестировал это, но могу делать то, что вам нужно/нужно (но вы должны изменить 'bean.currentPanel' на' String'). –

+0

Связанные: http://stackoverflow.com/q/8168302/1065197 –

+1

@LuiggiMendoza В тексте помимо геттера есть как минимум 3 опечатки! – skuntsel

ответ

7

В области EL имеется неявный объект 10, который оценивает текущий компонент пользовательского интерфейса. С учетом этой информации вы получите следующий атрибут:

rendered="#{component.id eq bean.currentPanel}" 
+0

Не могли бы вы также отправить какую-либо документацию на этот '# {component}'? –

+3

@Luiggi: он указан в таблице «getValue» в главе 5.6.2.1 спецификации JSF 2 (стр. 5-25) и, конечно, в известном [Связь в JSF 2] (http: //balusc.blogspot. com/2011/09/communication-in-jsf-20.html # ImplicitELObjects). – BalusC

+0

@LuiggiMendoza Он указан в разделе 5.6.2.1 спецификации JSF 2.0 «Неявный объект ELResolver для Facelets и программный доступ». – skuntsel

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