你是对的,这是我通常用 EDS 解决的问题。您需要的是动态生成 JSON 的 Java servlet。为避免自己处理所有 JSON 内容,您可以使用此库https://github.com/ecmdeveloper/eds-servlet为您完成大部分工作。
免责声明:我是这个库的作者。
使用这个库,您的具体问题可以解决如下:
- 使用 Maven 创建一个简单的 Java 项目
- 将以下依赖项添加到您的 pom.xml
<dependencies>
<dependency>
<groupId>com.github.ecmdeveloper</groupId>
<artifactId>eds-servlet</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>
@WebServlet(description = "An example of an EDS servlet.", urlPatterns = { "/type/*", "/types" })
public class DateSampleEDS extends AbstractEDSServlet {
private static final long serialVersionUID = 0xC00L;
@Override
public String[] getObjectTypeNames(String repositoryId) {
return new String[] {"TestDocumentClass1"};
}
@Override
public void handleRequest(ExternalDataRequest dataRequest, ExternalDataResponse dataResponse) {
Property property = dataRequest.getProperty("TestDateProperty1");
if ( property != null) {
property.setMinValue(getToday());
dataResponse.addProperty(property);
}
}
private Calendar getToday() {
Calendar calendar = Calendar.getInstance( TimeZone.getDefault() );
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMinimum(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.MINUTE, calendar.getActualMinimum(Calendar.MINUTE));
calendar.set(Calendar.SECOND, calendar.getActualMinimum(Calendar.SECOND));
calendar.set(Calendar.MILLISECOND, calendar.getActualMinimum(Calendar.MILLISECOND));
return calendar;
}
}