2012-04-19 2 views
2

У меня есть JSF-файл с одним столбцом, содержащий список художников вместе с командойLink для каждого, что я хотел бы показать или скрыть альбомы, которые имеет конкретный художник когда вы нажимаете на ссылку.Условно отключить значение атрибута компонента на основе логического

Я только начал изучать JSF, и мне интересно, как лучше всего использовать значение командыLink для переключения между «Показать альбомы» и «Скрыть альбомы» при нажатии на ссылку? Можно ли это сделать без использования javascript?

Благодаря

ответ

4

Вы можете использовать условный оператор ?: в EL для этого. Если логическое выражение оценивает true, тогда будет выполнен первый оператор, иначе второй оператор.

<h:commandLink ... value="#{bean.showAlbums ? 'Show' : 'Hide'} Albums" /> 

Вы также можете использовать те же условия, что и вы, чтобы показать/скрыть фактические альбомы.

+0

Спасибо за ответы! – nivis

+0

Когда я это пробовал, он обновляет все ссылки в datatable, а не только тот, который я нажал. Идея состоит в том, что при нажатии ссылки только эта ссылка должна изменить значение на «Скрыть альбомы», и должны отображаться только альбомы для этого конкретного исполнителя. – nivis

+0

Тогда вы должны позволить условию зависеть от текущей строки, а не от родительского компонента, иначе она будет применяться ко всем строкам. Например. 'value =" # {artist.showAlbums? 'Show': 'Hide'} Альбомы "' – BalusC

0

Ваша ссылка

<a4j:commandLink value="#{myBean.value}" action="#{myBean.toggleValue}" reRender="myLink" id="myLink"/> 

Ваш боб

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 

@ManagedBean(name="myBean") 
@ViewScoped 
public class MyBean { 
    boolean show = true; 

    public void toggleValue() { 
    this.show = !this.show; 
    } 

    public String getValue() { 
    return this.show ? "Show" : "Hide"; 
    } 
} 
+0

Спасибо, что ответили! Когда я это пробовал, он обновляет все ссылки в datatable, а не только тот, который я нажал. Идея состоит в том, что при нажатии ссылки только эта ссылка должна изменить значение на «Скрыть альбомы», и должны отображаться только альбомы для этого конкретного исполнителя. – nivis

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