java - 如何在从 <ui :repeat> 生成的 <tr> 中添加命令链接

标签 java jsf jstl

我正在使用以下代码并尝试使每一行可点击并设置其顶部的一些事件。

<table width="100%" class="TableSpace">

<ui:repeat var="damageinfo"
                            value="#{DamageDetails2.damageInfoAll}" varStatus="status">
    <h:commandLink>
        <tr class="row1 lineBorder" onclick="alert('Hello')">
            <td height="40">
                <h:outputText
                        value="#{damageinfo.damageID}" styleClass="LabelClass">
                </h:outputText>
            </td>
            <td height="40">
                <h:outputText
                        value="#{damageinfo.damageName}" styleClass="valueClass">
                </h:outputText>
            </td>
        </tr>
        <f:setPropertyActionListener target="#{carDetails.rootImage}"
                                    value="#{carDetails.carUrl2}" />
        <f:setPropertyActionListener target="#{carDetails.view}"
                                    value="#{carDetails.viewDetails['carUrl2']}" />
        <f:ajax event="action" render="ViewId" />
    </h:commandLink>
</ui:repeat>

</table>

但是它不起作用。这是怎么造成的以及如何解决?

最佳答案

这会生成invalid HTML。拥有 <a> 是违法的<tr> 周围的元素。浏览器行为未指定。根据所使用的网络浏览器品牌/版本的宽松程度,它可能有效,也可能无效,或者可能无法按您预期的方式工作。由于 JSF 最终只是生成 HTML,因此它实际上无法发挥任何作用来使其按照您想要的方式工作。

要么放个JS onclick <tr> 中的处理程序元素或放置 <h:commandLink>里面<td> ,或使用允许行选择的 3rd 方组件库(如 PrimeFaces),另请参阅 this showcase example .

另请参阅:

关于java - 如何在从 <ui :repeat> 生成的 <tr> 中添加命令链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11504966/

相关文章:

java - JSF的使用示例

spring - 如何在 Spring + JSP 中创建超链接

java - MVC、JSP + Servlet - 如何在应用程序加载时将某些对象放置/附加到应用程序范围?

java - 将数组的内容添加到组合框

java - Lettuce 多个响应式 Redis 存储和跨存储交易

java - 如何在用户按 Tab 时检查文本框值

javascript - 在 javascript 中评估条件时出现问题

java - 如何使用FileInputStream和BufferReader实现RandomAccessFile的seek()和getFilePointer()?

java - 套接字编程PrintWriter不产生输出

jsf - 我什么时候应该使用 h :outputLink instead of h:commandLink?