我正在做我的学期论文,我需要一些有关Primefaces的帮助。我正在使用 JSF 2.0 和 Primefaces 4.0。
默认的PrimeFace DataTable很棒,因为我们可以获取所选行的对象,这是我认为在纯 JSF 中无法做到的。
但我有一个问题,我希望用户不能选择一行,只需点击一行。我的意思是,当用户连续点击时,我得到点击行的值,这必须有一个链接。
当您在下面看到我的代码时,您会更好地理解:
<p:dataTable id="minhaTabela" var="disciplina" value="#{disciplinaMBean.listaDisciplinasPesquisadas}" rowKey="#{disciplina.id}"
selection="#{disciplinaMBean.disciplinaSelecionada}" selectionMode="single">
<p:column headerText="Nome" styleClass="pull-left">
<a class="various fancybox.ajax" href="edit.jsf">
#{disciplina.nome}
</a>
</p:column>
</p:dataTable>
如您所见,我希望当用户连续单击时,他将重定向到“edit.jsf”(实际上,这只是使用 jQuery 打开一个模式)。所以,我需要的是:
- 当用户单击一行时,该行不会被选中。
- 该行必须有一个链接或类似的东西,它有一个类“various fancybox.ajax”和一个链接。
那么,有一种方法可以使用 PrimeFaces 数据表来做到这一点吗?我该如何解决这个问题?
编辑
这是我的新代码,类似于@raylee 答案:
<p:dataTable tableStyleClass="table table-hover" var="disciplina" value="#{disciplinaMBean.listaDisciplinasPesquisadas}" rowKey="#{disciplina.id}" selection="#{disciplinaMBean.disciplinaSelecionada}" selectionMode="single" emptyMessage="Nenhuma disciplina encontrada." >
<p:column headerText="Nome" styleClass="pull-left">
<p:lightBox iframe="true" width="100%" height="100%">
<h:outputLink value="edit.jsf">
<h:outputText value="#{disciplina.nome}" />
</h:outputLink>
<f:facet name="inline">
<p:panel header="Editar disciplina">
<ui:include src="edit.xhtml" />
</p:panel>
</f:facet>
</p:lightBox>
</p:column>
<p:ajax event="rowSelect" listener="#{disciplinaMBean.limparSelecionadosDataTable}"/>
</p:dataTable>
更接近最后event="rowSelect"
一行,只需删除所有选定的行(我不希望当用户单击时,该行被选中,这是我找到解决该问题的方法,因为 PrimeFaces 没有给我们一个属性“selectOrClickRow” - 我正在等待这样的功能)。