当前位置: 首页 > 知识库问答 >
问题:

对于api类中的多维数组(docs-maven目标),是否有解决方法?

商嘉木
2023-03-14

我在运行docs goal for maven plugin expertion时遇到了错误“还不支持多维数组”。有没有一种方法可以避免它在进程中爆炸(即。为API生成其余的文档)?

我试过@ org . code Haus . expertion e . doc . exclude from documentation关于用双数组返回类的API方法。我在双数组的类上试过@ org . code Haus . expertion e . XML transient。

从那以后,我在enunicate文档中看到,这些只影响它们是否显示在文档中,而不是编译。

我很高兴听到你的任何想法!

谢谢你。

编辑:我能做的最好的事情就是将项目转储到临时目录,删除所有不需要访问 API 的模块,用双数组删除类,并将 REST API 的 java 方法签名的那部分替换为字符串。这允许我至少通过发音创建 api 文档页面,并通过 javadoc 给出描述。但是,我希望有一个更优雅的解决方案,所以如果你知道一个:),请分享

编辑2:示例pom:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.company.services.rest.service</groupId>
 <artifactId>service-rest-api</artifactId>
 <packaging>pom</packaging>
 <version>1.1</version>
 <name>service  REST API</name>
 <dependencies>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>2.2.1.GA</version>
      </dependency>
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.2.4</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>jaxrs-api</artifactId>
        <version>2.2.1.GA</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>2.2.1.GA</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>2.2.1.GA</version>
        <exclusions>
          <exclusion>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-multipart-provider</artifactId>
        <version>2.2.1.GA</version>
      </dependency> 
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>tjws</artifactId>
        <version>2.2.1.GA</version>
      </dependency>
  </dependencies>
  <build>
    <plugins>
     <plugin>
       <groupId>org.codehaus.enunciate</groupId>
       <artifactId>maven-enunciate-plugin</artifactId>
       <version>1.26</version>
       <configuration>
         <forceWarPackaging>false</forceWarPackaging>
         <configFile>/tmp/enunciate-work/enunciate.xml</configFile>
       </configuration>
       <executions>
         <execution>
           <goals>
             <goal>docs</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
  </build>

位于src/main/java.com/company/services/user/rest的文件:

package com.company.services.service.rest;

import javax.ws.rs.POST;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;

@Path("/")
public interface ServiceResource {
    @POST
    @Path("/statuschanges")
    @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
    @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
    public ServiceStatusChanges getServiceStatusChangeLogs(String string);
}

package com.company.services.service.rest;

import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class ServiceStatusChanges implements Serializable {
    private static final long serialVersionUID = 1l;
    private String[][] logs;
    public ServiceStatusChanges() {}

    public ServiceStatusChanges(String[][] logs) {
        this.logs=logs;
    }

    public String[][] getLogs() {
        return logs;
    }

    public void setLogs(String[][] logs) {
        this.logs=logs;
    }
}

enunciate.xml:

<enunciate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="
           http://enunciate.codehaus.org/schemas/enunciate-1.26.xsd">

  <modules>
      <disable-rule id="csharp.warnings"/>
      <disable-rule id="c.warnings"/>
      <disable-rule id="obj-c.warnings"/>
          <docs docsDir="api" title="REST API" includeDefaultDownloads="false" disableRestMountpoint="true">

    </docs>
    <!-- Disable all the client generation tools -->
    <basic-app disabled="true" />
    <c disabled="true" />
    <csharp disabled="true" />
    <java-client disabled="true" />
    <jaxws-client disabled="true" />
    <jaxws-ri disabled="false" />
    <jaxws-support disabled="false" />
    <jersey disabled="true" />
    <obj-c disabled="true" />
    <xml forceExampleJson="true"/>
    <jaxws disabled="false"/>
    <amf disabled="true"/>
  </modules>

</enunciate>

共有2个答案

葛嘉悦
2023-03-14

当我使用List时,发音文档生成幸存了下来

宇文嘉勋
2023-03-14

如果您不需要该方法的XML支持,您只需执行JSON并在移除MediaType后移除@XmlRootElement注释即可。来自@Consumes和@Produces的APPLICATION_XML。

如果您仍然想支持XML,您可以做一些增强来支持仅序列化的更改,例如使logs属性XML成为瞬态并将数组包装为序列化时间。这将有一个额外的好处,即发音能够记录它,而不是一些带外留档。例如:

@XmlRootElement
public class ServiceStatusChanges implements Serializable {
    private static final long serialVersionUID = 1l;
    private String[][] logs;
    public ServiceStatusChanges() {}

    public ServiceStatusChanges(String[][] logs) {
        this.logs=logs;
    }

    @XmlTransient
    public String[][] getLogs() {
        return logs;
    }

    public void setLogs(String[][] logs) {
        this.logs=logs;
    }

    @XmlElement( name = "logs" )
    public Log[] getLogsWrapped() {
        Log[] logs = new Log[this.logs.length];
        //iterate through the logs and wrap it...
        return logs;
    }
}

您的日志类可能如下所示:

@XmlRootElement
public class Log implements Serializable {
    @XmlValue
    public String value;
}
 类似资料:
  • 问题内容: 没有,是否有任何方法可以查看值中是否存在?我发现 但这只会搜索数组的第一维,而我需要搜索2维。 问题答案: 我创建了一个5x5整数数组,并将其值i * j初始化。 方法采用要搜索的行号和值。

  • 问题内容: 例如: 要么 这些名称或破折号有问题吗? 问题答案: 老实说,这取决于个人开发人员和他们自己的感受。就像您建议的那样,有两种同样好的构造CSS类的方法: 它们可以达到相同的目的,但是当您开始广泛思考时,您会发现这些样式之间的差距有多大。 分离班使他们可以重复使用: 该干的惯例是从不重复自己。通过分离or类,我们可以 重用 相同的类: 在第二种方法中-使用分隔符,代码将是: 在像这样的简

  • 问题内容: 检查数组是 原始值的平面数组 还是 多维数组 的最有效方法是什么? 没有实际循环遍历数组并在其每个元素上运行的方法,有没有办法做到这一点? 问题答案: 简短的答案是,如果“第二维”可能在任何地方,您都必须至少隐式​​循环才能做到。如果必须在第一项中,您只需 但是,我能找到的最有效的通用方法是在数组上使用一个foreach循环,每当找到一个命中点时就会短路(至少隐式循环比直接的for()

  • 本文向大家介绍php中array_multisort对多维数组排序的方法,包括了php中array_multisort对多维数组排序的方法的使用技巧和注意事项,需要的朋友参考一下 PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。但是多维数组的格式要一致 关联(string)键名保持不变,但数字键名会被重新索引。 输入数组被当成一个表的列

  • 问题内容: 在高斯消除矩阵的标准方法的宇宙中是否有某处? 人们通过谷歌找到了很多片段,但我更愿意使用“可信任”模块。 问题答案: 我终于发现,可以使用 LU分解 完成此操作。在此, U 矩阵表示线性系统的简化形式。 然后读 取决于系统的可溶解性,该基质具有上部三角形或梯形结构。在上述情况下,由于矩阵只有rank,所以会出现零线。

  • 本文向大家介绍js一维数组、多维数组和对象的混合使用方法,包括了js一维数组、多维数组和对象的混合使用方法的使用技巧和注意事项,需要的朋友参考一下 这篇文章的主要目的是讲解JavaScript数组和对象的混合使用,由于JS的弱检查特性,因此在JS数组中可以同时存储不同类型的变量,比如你可以把数字、字符串、字符、对象等内容放在同一个数组中。对象也可以做同样的事情,区别是对象可以指定对象里每一个成员的