0

アプリケーションに ZK フレームワーク バージョン 6.5.2 を使用しています。そして今、Zest を使用して RESTful をそれに統合したいと考えています。問題は、Zest の最新バージョンが 1.1.0 であり、zcommon-5.0.0 に依存していることです。したがって、この依存関係 (zcommon-5.0.0) は重複しているため、次のように POM ファイルから除外しました。

<dependency>
      <groupId>org.zkoss.zest</groupId>
      <artifactId>zest</artifactId>
      <version>1.1.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.zkoss.common</groupId>
          <artifactId>zcommon</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.zkoss.common</groupId>
          <artifactId>zweb</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

その結果、zest は zcommon-6.5.2 に依存するようになりました。アプリを起動すると、エラーが発生しました:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to org.zkoss.xel.taglib.FunctionDefinition
    at org.zkoss.xel.taglib.Taglibs.getFunctionMapper(Taglibs.java:150)
    at org.zkoss.xel.taglib.Taglibs.getFunctionMapper(Taglibs.java:109)
    at org.zkoss.zest.sys.impl.ParserImpl.parse(ParserImpl.java:97)
    at org.zkoss.zest.sys.impl.ParserImpl.parse(ParserImpl.java:54)
    at org.zkoss.zest.sys.ZestManager.loadConfiguration(ZestManager.java:98)
    at org.zkoss.zest.sys.ZestManager.init(ZestManager.java:70)
    at org.zkoss.zest.sys.ZestFilter.init(ZestFilter.java:74)

ここに私のweb.xmlがあります:

<filter>
    <filter-name>zest</filter-name>
    <filter-class>org.zkoss.zest.sys.ZestFilter</filter-class>
    <!-- specifies the class name of the ZEST manager to handle actions Default: org.zkoss.zest.sys.ZestManager -->
    <init-param>
      <param-name>manager-class</param-name>
      <param-value>org.zkoss.zest.sys.ZestManager</param-value>
    </init-param>

    <!-- specifies the class name of the parser used to parse the configuration file (WEB-INF/zest.xml). Default: org.zkoss.zest.sys.impl.ParserImpl -->
    <init-param>
      <param-name>parser-class</param-name>
      <param-value>org.zkoss.zest.sys.impl.ParserImpl</param-value>
    </init-param>

  </filter>

zest.xml の残りの定義は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<zest>

  <xel-method prefix="c" name="toMethodName"
            class="com.myapp.view.RestAction"
        signature="java.lang.String toMethodName(java.lang.String)"/>
    <action path="/rest" method="${c:toMethodName(request.method)}"
    class="com.myapp.view.RestAction">
        <result>/WEB-INF/index.zul</result>
    </action>
</zest>

これら 2 つのファイル Taglibs.java のソース コードを zcommon のバージョン 5.0.0 と 6.5.2 で比較したところ、非常に多くの違いがあることがわかりました。上記の問題が発生した理由だと思います(初期化プロセスが5.0.5から6.5.2に変更されました)。zest を ZK アプリケーションに統合できるように、この問題を解決するのを手伝ってくれませんか? どうもありがとう。

4

1 に答える 1

0

Zest 1.1 は ZK 6.5.2 と互換性がありません。Zest 2.0 にアップグレードする必要があります。

http://mavensync.zkoss.org/maven2/org/zkoss/zest/zest/2.0.0.FL.20130205/

于 2013-11-21T05:55:55.177 に答える