Jsf 2 Primefaces:点击p:column donds´;t调用rowSelect方法

Jsf 2 Primefaces:点击p:column donds´;t调用rowSelect方法,jsf-2,primefaces,Jsf 2,Primefaces,在我的p:列中,我有几个带文本的div,如果我单击文本,它不会选择行,也不会调用rowSelect事件 例如: ... <p:column> text1 <div>text2</div> <p:column> ... 。。。 文本1 文本2 ... 我可以点击文本1,但不能点击文本2。问题在哪里?问题在于div覆盖列的onclick事件。我遇到了这个问题,我的解决方案是在div上用如下函数覆盖该事件: XHTML: &

在我的p:列中,我有几个带文本的div,如果我单击文本,它不会选择行,也不会调用rowSelect事件

例如:

...
<p:column>
         text1
    <div>text2</div>
<p:column>
...
。。。
文本1
文本2
...

我可以点击文本1,但不能点击文本2。问题在哪里?

问题在于div覆盖列的onclick事件。我遇到了这个问题,我的解决方案是在div上用如下函数覆盖该事件:

XHTML:

<p:datatable ..(properties)... widgetVar="dt" rowIndexVar"rowIndex" ...>
.......
<p:column>
   <div onclick="selectCurrentRow(dt,#{rowIndex});" > hola </div>
</p:column>
.......
<p:datatable/>
如果JS saydt未定义,只需将WingTvar名称与PF()函数环绕,如下所示:

<div onclick="selectCurrentRow(PF('dt'),#{rowIndex});" > hola </div>
霍拉 此外,此解决方案还可用于oncontextmenu事件:

<div oncontextmenu="selectCurrentRow(PF('dt'),#{rowIndex});" onclick="selectCurrentRow(PF('dt'),#{rowIndex});" > hola </div>
霍拉
div元素确实可以防止默认的“on select”事件,但我认为有一个更简单的解决方案。使用一个而不是div元素。Span不会阻止此类事件,因此在呈现dataTable时,您可以使用它或任何其他预期位于td元素内的元素

...
<p:column>
     text1
     <span style="display:block"> text2 </span>
<p:column>
...
。。。
文本1
文本2
...
...
<p:column>
     text1
     <span style="display:block"> text2 </span>
<p:column>
...