小编Jer*_*emy的帖子

使用swagger&jboss进行javax验证

我正在尝试使用招摇来记录我的休息api,并且我已经取得了一些成功,但是当涉及到约束资源参数时,我正在碰壁.我正在使用JBoss RESTEasy与hibernate验证器提供程序和Jackson 2.x注释POJO.我遇到的问题是遇到@ DecimalMin/@ DecimalMax注释时我得到了一个

java.lang.NoSuchMethodError: javax.validation.constraints.DecimalMin.inclusive()Z 
Run Code Online (Sandbox Code Playgroud)

似乎swagger正在尝试使用更新版本的javax.validation.constraints.*(v1.1.0.Final)库,而jboss正在使用旧版本(v1.0.0.GA).我已经尝试了所有我能想到的东西,包括适当的库无济于事.

环境是JBoss EAP 6.4.0.GA

我的招摇条目(pom.xml):

<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-jaxrs</artifactId>
    <version>1.5.8</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

示例POJO代码段:

...
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
...
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
    "altM",
    "altDatum"
 })
public class Altitude {
@JsonProperty("altM")
@DecimalMin("-2000")
@DecimalMax("10000")
@NotNull
private Double altM;
...
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多东西,但是我学到的东西越多,我相信以下是我理解依赖关系的两个最相关的尝试:

尝试1:从hibernate验证器中排除javax.validation并让swagger包含它:

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-hibernatevalidator-provider</artifactId>
    <version>3.0.16.Final</version>
    <exclusions>
        <exclusion>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)

尝试2:显式包含javax.validation v1.1.0.Final:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Maven依赖树(尝试1):

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @     MissionPlanningService ---
[INFO] mil.army.cerdec.cpi.mcas:MissionPlanningService:war:0.0.2-SNAPSHOT
[INFO] +- org.jboss.resteasy:resteasy-jaxrs:jar:3.0.16.Final:compile
[INFO] |  +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.0_spec:jar:1.0.0.Final:compile
[INFO] …
Run Code Online (Sandbox Code Playgroud)

jboss java-ee hibernate-validator maven swagger

9
推荐指数
1
解决办法
774
查看次数

使用延迟加载恢复JTree中的扩展/选择状态

我有一个应用程序,其中包含一个支持DefaultTreeModel的JTree,它用于显示反映我服务器上文件系统一部分的文件层次结构(我将其称为我的客户端应用程序).我还有一个服务器应用程序,它提供我的客户端应用程序需要显示的数据(我将这称为我的服务器应用程序).我正在使用"懒惰加载子"方法,以便我只需要将文件加载到我的树中,如果用户对它们感兴趣的话.延迟加载方法:

  1. 我覆盖 treeWillExpand(TreeExpansionEvent evt)
  2. 我将选择路径设置为扩展节点的路径.
  3. 然后我向服务器发送一条消息,询问该节点的子节点.
  4. 当服务器响应时,我得到最后选择的路径组件.
  5. 然后我DefaultTreeModel.insertNodeInto()用于每个返回的数据文件.
  6. 最后我打电话DefaultTreeModel.nodeStructureChanged().

以上工作正常,懒惰加载孩子我没有任何问题.我的问题出现在新数据上传到服务器并且我想更新树不仅包括新数据,而且还要将扩展状态和选定节点设置为更新树之前的状态(以便用户因为有新的数据需要查看,所以不会在树上蠢蠢欲动.流程如下:

  1. 新数据上传到服务器
  2. 服务器应用程序存档此数据并使用有关上载文件的信息填充数据库.
  3. 服务器应用程序通知客户端应用程序已上载新数据.
  4. 客户端应用程序使用保存树的扩展状态 JTree.getExpandedDescendants()
  5. 客户端应用程序使用保存树的选择路径 JTree.getSelectionPath()
  6. 客户端应用程序从DefaultTreeModel中删除所有节点.
  7. 客户端应用程序从根节点开始从服务器请求数据.
  8. 客户端应用程序遍历从JTree.getExpandedDescendants()调用枚举中的JTree.expandPath()每个TreePath 返回的树路径枚举.
  9. 客户端应用程序设置选定的树路径.

我的问题是,无论我尝试什么,树的GUI都不会更新以反映扩展状态.我知道我对expandPath的调用正在发挥作用,因为我可以看到客户端发送的数据请求以及每次调用expandPath时服务器数据的响应.我还在另一个窗口中显示有关当前所选节点的信息,并显示正确选择的节点.但是,令我失望的是,GUI只显示根节点(已展开)和它的子节点(未展开)而不是之前的展开状态.

所以我的问题是:如何恢复JTree的扩展状态,以便在数据模型更新之前和之后GUI保持不变?

这些是我尝试过的一些事情:

  • 我找到一个与我的设置类似的线程,他的问题通过覆盖来解决equals(),hashCode()但这对我没有用.
  • 各种方法来调用扩展,例如:setExpandsSelectedPaths(true),nodeStructureChanged(),JTree.invalidate()
  • 但是,保存扩展状态的许多不同变体,我不相信扩展状态不正确,因为我可以看到正确的数据在客户端应用程序和服务器应用程序之间来回传递.

这是我的SSCCE:

package tree.sscce;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.JButton;
import java.util.Enumeration;
import javax.swing.BoxLayout;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeWillExpandListener;
import …
Run Code Online (Sandbox Code Playgroud)

java swing lazy-loading jtree defaulttreemodel

5
推荐指数
1
解决办法
2481
查看次数