Как добавить цифровые часы, используя javascript в файле .JSFF? - PullRequest
0 голосов
/ 14 июля 2020

Я использую программу 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>

1 Ответ

0 голосов
/ 16 июля 2020

Проблема в том, что вы не можете добавить тег ad: document (и, следовательно, вы не можете добавить туда тег ресурса) во фрагмент. Чтобы добавить javascript к фрагменту, вы добавите ad: panelFormLayout, а к нему - тег at: resource. Следующая проблема - ваш код JavaScript. Вы предполагаете, что компонент можно найти по идентификатору txt. Это верно только в том случае, если вы добавляете компонент на страницу напрямую, вне любого другого контейнера имен. Фрагмент - это контейнер именования, поэтому идентификатор клиента компонента изменяется в соответствии с его положением на странице. Поскольку вы можете добавить фрагмент на страницу несколько раз, в противном случае идентификатор txt будет присутствовать несколько раз. Чтобы увидеть разницу, вы можете проверить источник страницы при рендеринге страницы с фрагментом (областью на странице). Идентификатор будет примерно таким: r1: 0: txt вместо txt. r1 - это идентификатор региона, 0 - это индекс региона, а 'txt' - это II компонента внутри региона.

...