【问题标题】:Setting minValue of date field dynamically in Content Navigator Entry Template在 Content Navigator 条目模板中动态设置日期字段的 minValue
【发布时间】:2019-12-31 14:46:32
【问题描述】:

我在 ICN 条目模板中有一个要求,以防止用户选择回溯日期。我知道这可以使用 EDS 来实现,我已经部分完成了。我可以将 MinValue 设置为静态/硬编码日期。但我不太确定如何动态设置 MinValue。

我就是这样做的。

{ "symbolicName": "date1", "label": "Date 1 : ", "minValue": "1982-09-10T01:18:17Z" }

这就是我想要的样子:

{ "symbolicName": "date1", "label": "Date 1", "minValue": {now} OR {today} }

任何指针将不胜感激。

【问题讨论】:

    标签: filenet ibm-content-navigator


    【解决方案1】:

    你说得对,这是我通常用 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 的属性TestDocumentClass1 输入过去的日期:

    【讨论】:

      猜你喜欢
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 2016-12-04
      • 1970-01-01
      • 2012-12-21
      • 2020-01-04
      相关资源
      最近更新 更多