<dependencies>
<dependency>
<groupId>org.glassfish.jersey.bundles</groupId>
<artifactId>jaxrs-ri</artifactId>
<version>2.0</version>
<!-- <scope>provided</scope> -->
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.16</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.16</version>
</dependency>
</dependencies>
@Provider
public class MyParamConverterProvider implements ParamConverterProvider{
@Override
public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, Annotation[] annotations) {
if(rawType.equals(DateResource.class)){
// return (ParamConverter<T>) new MyDate();
return (ParamConverter<T>) new DateResource();
//return (ParamConverter<T>) new ParamConverter<DateResource>();
}
return null;
}
}
public class DateResource implements ParamConverter<MyDate> {
@Override
public MyDate fromString(String value) {
// TODO Auto-generated method stub
if (value == null || value.trim().isEmpty()) {
return null;
}
MyDate dateParamModel = new MyDate();
dateParamModel.setDateAsString(value);
return dateParamModel;
}
@Override
public String toString(MyDate mo) {
return ((MyDate) mo).getDateAsString();
}
}
public class MyDate {
private String dateAsString;
public String getDateAsString() {
return dateAsString;
}
public void setDateAsString(String dateAsString) {
this.dateAsString = dateAsString;
}
public LocalDateTime getDate() {
LocalDateTime dateTime = null;
try {
dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE_TIME);
} catch (DateTimeParseException ex) {
System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date time failed.");
}
try {
dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE);
} catch (DateTimeParseException ex) {
System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date failed.");
}
return dateTime;
}
}
@Path("date/{dateString}")
public class MyCustomdate {
@GET
@Produces(MediaType.TEXT_PLAIN)
//public String getRequestedDate(@PathParam("dateString") String dateString)
public String getRequestedDate(@PathParam("dateString") MyDate myDate)
{
return "Got"+ myDate.getDate() ;
}
}
我的主要班级
@ApplicationPath("webapi")
public class MyRestApiApp extends Application {
}
请就这个问题进行指导。
if(rawType.equals(DateResource.class)){
这是不对的。您需要检查参数类型。在验证资源参数时,Jersey要做的是检查所有paramconverterprovider
,看看它们是否都返回该参数类型的null以外的其他内容。由于您检查的是转换器类型而不是参数类型,因此在检查mydate
参数期间,它返回null。这时就会发生ModelValidationExeption
。
只需更改它以检查要转换的参数类型。
if(rawType.equals(MyDate.class)){
还要从依赖项中删除jaxrs-ri
。你不需要它。
我试图在PySpark中运行一个自定义的HDFS阅读器类。这个类是用Java编写的,我需要从PySpark访问它,可以从shell访问,也可以使用spark-submit访问。 有人能帮忙吗?谢了。
我正在尝试运行一个Java类作为gradle任务。 我已将此添加到我的: 但是,当我在命令行上运行时,它会失败并出现以下错误: 因此,我在我的任务中添加了一个类路径,如问题中所述: 然而,这是一个大型的遗留项目,具有非常长的类路径,所以当我运行< code > gradle download keystore 时,我得到了另一个错误: 所以我在中修改了我的,现在看起来像这样: 这适用于命令行,但是
我有一门狗和猫的课,看起来像这样: 这些类都实现了我创建的一个名为Speakable的接口,它看起来像这样: 这个Speakable接口之所以存在,是因为我需要一个引用变量,允许我将狗和猫添加到同一个ArrayList中,并且仍然在它们上调用说话()方法。 我还需要重写Comparable接口的compareTo()方法,以便比较狗的名字。调用此方法时,我认为我的代码如下所示:a.compareT
在中定义额外的方法(不重写超类方法)时,代码编译良好,没有任何问题,但如果我试图调用额外的方法,它会抛出错误。那么,在使用扩展时,是否只有在子类中的方法才可能?如果是这样,谁能解释一下为什么? 下面是我的代码的样子 这就是我得到的错误
请让我知道,如果这是不是正确的地方发布,但我一直在寻找有关这方面的信息,似乎找不到一个简洁的答案。 我一直在尝试使用KeyClope来满足我们应用程序的用户管理需求。虽然我发现KeyClope非常有能力,也非常有效,但我已经进入了我们使用的死胡同。 背景: 传统上,我们的应用程序使用一个非常基本的登录框架来验证身份验证。然后使用我们无法更改的第三方应用程序,确定用户将通过wsdl操作拥有的角色,并
问题内容: 例: 我发现上面的代码在Java中是完全合法的。我有以下问题。 在方法内部拥有类定义的用途是什么? 是否会为生成一个类文件 我很难以面向对象的方式来想象这个概念。在行为中具有类定义。也许有人可以用等效的真实例子告诉我。 方法中的抽象类对我来说听起来有点疯狂。但不允许使用任何接口。这背后有什么原因吗? 问题答案: 这称为本地课程。 2很简单:是的,将生成一个类文件。 1和3是同一个问题。