在内容导航器条目模板中动态设置日期字段的最小值

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: