如何在 .JSFF 文件中使用 javascript 添加数字时钟?

How to add a digital clock using javascript in the .JSFF file?

我正在使用 ADF 程序。此 javascript 代码在 .JSF 文件中有效,但在 .JSFF 文件中无效。下一个解决方案是什么?

<?xml version='1.0' encoding='UTF-8'?>
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core"
                xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
    <f:view>
       <af:document title="Test.jsff" id="d1">
        <af:resource type="javascript">
          function startTime() {
              var today = new Date();
              var h = today.getHours();
              var m = today.getMinutes();
              var s = today.getSeconds();
              m = checkTime(m);
              s = checkTime(s);
              document.getElementById('txt').innerHTML = h + ":" + m + ":" + s;
              t = setTimeout('startTime()', 500);
          }

          function checkTime(i) {
              if (i &lt; 10) {
                  i = "0" + i;
              }
              return i;
          }
        </af:resource>
        <af:form id="f1">
            <af:outputText value="outputText1" id="txt">
                <af:clientListener method="startTime()" type="propertyChange"/>
            </af:outputText>
        </af:form>
    </af:document>
</f:view>
</ui:composition>

问题是您无法将 ad:document 标签添加到片段中(因此您也无法在那里添加资源标签)。要将 javascript 添加到一个片段中,您将添加一个 ad:panelFormLayout 并向其添加 at:resource 标记。 下一个问题是您的 JavaScript 代码。您假设可以通过 ID 'txt' 找到该组件。仅当您在任何其他命名容器之外直接将组件添加到页面时才会出现这种情况。 片段是一个命名容器,因此组件的客户端 ID 会根据其在页面上的位置而变化。由于您可以将片段多次添加到页面,否则 ID 'txt' 将出现多次。要查看差异,您可以在使用片段(页面上的区域)呈现页面时检查页面源代码。 ID 类似于 'r1:0:txt' 而不是 'txt'。 r1是区域的id,0是区域的索引,'txt'是区域内组件的II。