2010-03-16 3 views
2

У нас есть система, построенная на швах/богатых поверхностях. Эта веб-страница, где таблицы отображаются из динамического контекста (из нескольких разных источников данных, и каждый из них использует другой макет, чтобы представлять по существу одну и ту же концепцию реального мира). В результате эта таблица привязывается к компоненту, и из этого компонента генерируются столбцы/макет.Как создать программную ссылку программно

Теперь мне нужно добавить ссылку команду на определенном столбце, что эквивалентно

<a4j:commandLink value="#{actBean.Ids}" action="#{actBean.genDetails}"> 
    <f:setPropertyActionListener target="#{actBean.Ref}" value="#{cont}"/> 
</a4j:commandLink> 

на странице JSF.

Таблица переплетены в управляемом фасоли с

HtmlDataTable dataTable = new HtmlDataTable(); 
HtmlColumn column = new Column(); 
//some code to setup column name, value etcs 
dataTable.getChildren().add(column); 
//What do I do here to bind a commandlink with a property action 
//listener to column? 

Мой вопрос, как я могу это сделать программно?

Спасибо!

+0

@John @BalusC или @Bozho покажет вам, как. Вы должны привязать свой компонент JSF в своем управляемом компоненте, чтобы получить свою цель. –

+0

@Arthur Я на самом деле сделал все это на основе учебника BalusC. Просто я не смог найти подходящий способ связывания объектов commandlink и propertyActionListener (на объектах HtmlColumn), их нет, где их можно найти в richfaces/jsf api (или я просто их не хватает). – John

+0

Будь круто. @Bozho онлайн. Он покажет вам, как –

ответ

6
HtmlAjaxCommandLink commandLink = new HtmlAjaxCommandLink(); 
commandLink.addActionListener(new SetPropertyActionListener(target, value)); 
column.getChildren().add(commandLink); 

где target и value являются ValueExpression «s. Они могут быть созданы с помощью:

ExpressionFactory.getInstance().createValueExpression(ctx, expression, expectedType)

и требуемой ELContext можно obained через FacesContext.getCurrentContext().getELContext()

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