单击h:CommandLink,不带绑定属性,在Backing Bean中访问p:datatable的特定行

时间:2015-06-02 07:00:51

标签: jsf jsf-2 primefaces datatable

请在下面找到我的代码:p:datatable,其中h:commandlink是其列之一:

public interface ProgressListener {
    public void onProgressChange(long progress);
}

public class CustomVideoRenderer extends  MediaCodecVideoTrackRenderer {

    long progress = 0;
    private final CopyOnWriteArraySet<ProgressListener> progressListeners = new CopyOnWriteArraySet();

    // [...]
    // Skipped constructors
    // [...]

    public void doSomeWork(long positionUs, long elapsedRealtimeUs) throws ExoPlaybackException {
        super.doSomeWork(positionUs, elapsedRealtimeUs);

        long tmpProgress = videoPlayer.getBufferedPercentage();

        if (tmpProgress != this.progress) {
            this.progress = tmpProgress;

            for (ProgressListener progressListener : this.progressListeners) {
                progressListener.onProgressChange(progress);
            }
        }
    }

    public void addProgressListener(ProgressListener listener) {
        this.progressListeners.add(listener);
    }

}

我想访问Backing Bean ListBean中的数据表行,其中使用action =&#34;#{listBean.getDetails}&#34;单击h:commandLink;不使用数据表绑定属性。

我的Backingbean是会话作用域,我们正在使用jsf 2.1.7 Mojarra。

3 个答案:

答案 0 :(得分:3)

但最重要的是,看看PrimeFaces展示中的第一个选择示例http://www.primefaces.org/showcase/ui/data/datatable/selection.xhtml

答案 1 :(得分:0)

将所选行作为参数传递给方法,例如

<h:commandLink value="#{list.actionRequired}" action="#{listBean.getDetails(list)}" styleClass="linkStyle"></h:commandLink> 

并更改getDetails以接受元素类型listBean.lazyDatalist

的参数

答案 2 :(得分:0)

var包含用于填充每一行的对象。您可以像#{listBean.getDetails(list)}一样在行动中传递它。别忘了将此参数添加到bean方法中。

顺便说一句:list非常误导。您最好将其命名为element或使用具体的实体名称命名,可能是employee。您的团队将不胜感激。