在内容导航器条目模板中动态设置日期字段的最小值
Setting minValue of date field dynamically in Content Navigator Entry Template
我在 ICN 条目模板中有一项要求,以防止用户选择回溯日期。我知道这可以使用 EDS 实现,我已经部分完成了。我可以将 MinValue 设置为 static/hard 编码日期。但我不太确定如何动态设置 MinValue 。
我就是这样做的。
{ "symbolicName": "date1", "label": "Date 1 : ", "minValue": "1982-09-10T01:18:17Z" }
这就是我想要的样子:
{ "symbolicName": "date1", "label": "Date 1", "minValue": {now} OR {today} }
任何指点将不胜感激。
你说的对,这是我平时用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>
- 为了让 Maven 开心,我还必须添加这个:
<properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>
- 使用以下代码实现 servlet:
@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;
}
}
将此 servlet 部署到 WebSphere 并将您的 EDS 配置指向此 servlet。
现在您不能为 属性 TestDateProperty1
输入过去的日期 class TestDocumentClass1
:
我在 ICN 条目模板中有一项要求,以防止用户选择回溯日期。我知道这可以使用 EDS 实现,我已经部分完成了。我可以将 MinValue 设置为 static/hard 编码日期。但我不太确定如何动态设置 MinValue 。
我就是这样做的。
{ "symbolicName": "date1", "label": "Date 1 : ", "minValue": "1982-09-10T01:18:17Z" }
这就是我想要的样子:
{ "symbolicName": "date1", "label": "Date 1", "minValue": {now} OR {today} }
任何指点将不胜感激。
你说的对,这是我平时用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>
- 为了让 Maven 开心,我还必须添加这个:
<properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>
- 使用以下代码实现 servlet:
@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;
}
}
将此 servlet 部署到 WebSphere 并将您的 EDS 配置指向此 servlet。
现在您不能为 属性
TestDateProperty1
输入过去的日期 classTestDocumentClass1
: