0

次のコードを使用して、各行をクリック可能にし、その上にいくつかのイベントを設定しようとしています。

<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>

しかし、うまくいきません。これはどのように発生し、どうすれば解決できますか?

4

1 に答える 1

1

これにより、無効なHTMLが生成されます。<a>の周りに要素を含めることは違法<tr>です。ブラウザの動作は指定されていません。使用するウェブブラウザのメーカー/バージョンの寛容さに応じて、機能する場合と機能しない場合があります。または、意図したとおりに機能しない場合があります。JSFは最終的にHTMLを生成するだけなので、意図したとおりに機能させるために魔法をかけることはできません。

JSonclickハンドラーを<tr>要素に配置するか、<h:commandLink>内部に配置する<td>か、行選択を可能にするPrimeFacesなどのサードパーティコンポーネントライブラリを使用します。このショーケースの例も参照してください。

参照:

于 2012-07-16T13:49:19.203 に答える