Erweiterung des Kalender-Widgets im ZK Studio 5.0

In einer übernommenen RESTful Spring-Boot-Web-Anwendung gibt es einige Einschränkungen, die ich derzeit nicht ändern kann. Der Code verwendet teilweise Java 1.6, der Rest ist in Java 17 geschrieben. Und das ZK-Studio hat die Version 5.0 und kann nicht ohne Probleme aktualisiert werden. Dies war zumindest die Aussage meines Vorgängers.

Der Server läuft auf einer VM mit Linux. Was ich tun möchte, ist, das Kalender-Widget des ZK-Studios um eine Spalte für die Kalenderwoche zu erweitern. Dieses aktualisierte Widget ist bereits ab Version 6.5 integriert, aber ich bin an v5.0 gebunden. :frowning:

Um es selbst zu implementieren, habe ich folgenden Änderungen vorgenommen:

…\workflow\zk-components.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<zk>
    <component>
        <component-name>customCalendar</component-name>
    <component-class>at.cps.oflow.utils.CustomCalendar</component-class>
    </component>
</zk>

…\workflow\240\la_erfassung.zul:

<zk>
    <import src="../zk-components.xml"/>
    <component>
        <component-name>customCalendar</component-name>
        <component-class>at.cps.oflow.utils.CustomCalendar</component-class>
        </component>
        <window border="none" id="ls_erfassung">
             <grid>
                  <row>
                       <cell>
                             <label>Date:</label>
                       </cell>
                       <cell>
                            <customCalendar id="datum" value="@{actcontroller.actVars.datum}" constraint="no empty"/>
                       </cell>
                   </row>
                   …
             </grid>
      </window>
</zk>

CustomCalendar.java:

package at.cps.oflow.utils;

import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;

import org.zkoss.zk.ui.sys.*;

public class CustomCalendar extends org.zkoss.zul.Calendar {

    @Override
    protected void renderProperties(final ContentRenderer renderer) throws IOException {
        super.renderProperties(renderer);
        // Add code for the week of year
        final Calendar cal = new GregorianCalendar();
        final int week = cal.get(Calendar.WEEK_OF_YEAR);

        renderer.render("weekNumber", week);
    }
}

Offensichtlich habe ich etwas vergessen. Es ist mein erster Kodierungsversuch mit dem MVVM-Paradigma und dem ZK-Studio. Als ich die Anwendung ausführte, wurde ein Fehler ausgegeben, der besagt, dass die Datei ..\zk-components.xml nicht gefunden werden kann:

Screenshot 2024-12-14 104942 Component definition not found_ customCalendar

Daher habe ich beschlossen, den Code direkt in die ZUL-Datei einzufügen:

…\workflow\240\la_erfassung.zul:

<zk>
    <!--import src="../zk-components.xml"/-->
    <component>
        <component-name>customCalendar</component-name>
        <component-class>at.cps.oflow.utils.CustomCalendar</component-class>
    </component>
    <window border="none" id="ls_erfassung">
        <grid>
            <row>
                <cell>
                    <label>Date:</label>
                </cell>
                <cell>
                    <customCalendar id="datum" value="@{actcontroller.actVars.datum}" constraint="no empty"/>
                </cell>
           </row>
            …
        </grid>
    </window>
</zk>

Aber ich erhalte immer noch eine Fehlermeldung:

Screenshot 2024-12-13 212528 Component definition not found

Spalte 3 Zeile 16 in der ZUL-Datei entspricht dem Ende des Tags . Könnt ihr mir sagen, was ich da vergessen habe, hinzuzufügen?