java - Ant Input Task中如何判断输入是否为空?

标签 java ant build

我有一个需要用户输入的 ant 脚本。我想确保用户输入了正确的输入类型,如果没有,提示他们输入正确的内容。

<input message="secure-input:" addproperty="the.password" >
</input>

我必须检查输入是否为空,然后我会提示他们重新输入。

Ant 输入任务可以吗?

最佳答案

大多数条件条款最多允许您 fail如果不满足某些条件,则脚本。我想象你正在收集用户的一些输入,所以如果用户提供空密码失败可能不是最好的可用性体验,因为他将不得不重新输入所有内容......

此外,仅测试一个空字符串似乎是一个糟糕的验证,如果用户提交了一堆空格怎么办?

我的(诚然是老掉牙的)建议如下:

<target name="askPassword">
    <local name="passwordToValidate"/>
    <input message="secure-input:" addproperty="passwordToValidate"/>

    <script language="javascript">
        <![CDATA[   
            passwordToValidate = project.getProperty("passwordToValidate");

            //You can add more validations here...
            if(passwordToValidate.isEmpty()){
                println("The password cannot be empty.");
                project.executeTarget('askPassword');
            }
        ]]>
    </script>   

    <property name="the.password" value="${passwordToValidate}"/>       
</target>

所以亮点:

  1. 使用local task为“passwordToValidate”属性设置一个本地范围(请记住,一旦您在 ant 脚本上设置了一个属性,大多数任务都不允许您重写它,因此递归会出现问题)
  2. 使用脚本测试您的输入(可能添加更多验证)
  3. 如果测试失败,再次调用目标
  4. 如果测试成功,将局部范围的属性分配给全局范围的属性

我的 2 美分。

关于java - Ant Input Task中如何判断输入是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406649/

相关文章:

java - 在我的 Pac-Man 女士实现中可能过度使用了 java 接口(interface)

build - Athena Common Build for Eclipse 插件项目的目的和好处

java - 如何在同一端口托管 SOAP 服务和 REST 服务?

java - 在主方法中创建同一类的实例是否会创建两个实例?

java - 将返回 false 的变量放入自己的数组中

javax.management.MalformedObjectException。属性值部分中的无效字符 ':'

android - Android Studio 可以将 ant 构建脚本转换为 gradle 构建脚本吗?

java - Ant javac : package x does not exist, 但我将 x.jar 添加到 java 构建路径库

node.js - 使用npm将前端模块复制到顶级目录

缺少 Android Activity XML 资源标识符