如何检查Ant输入任务中的输入是否为空白?

时间:2013-03-14 10:26:46

标签: java ant build

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

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

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

是否可以在蚂蚁输入任务中使用?

3 个答案:

答案 0 :(得分:3)

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

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

我的(诚然是hackish)建议如下:

<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为&#34; passwordToValidate&#34;设置本地范围。属性(请记住,一旦在ant脚本上设置属性,大多数任务都不允许你重写它,所以递归会有问题)
  2. 使用脚本测试输入(可能添加更多验证)
  3. 如果测试失败,请再次调用目标
  4. 如果测试成功,请将本地范围属性分配给全局范围的
  5. 我的2美分。

答案 1 :(得分:1)

您可以使用条件任务来检查输入是否为空,但您也可以使用antcontrib添加if / else并显示用户相应的消息:

<if>
    <not>
        <length string="${the.password}" trim="true" when="greater" length="0" />
    </not>
</if>
<then>
    <echo>Your password is empty!</echo>
</then>

答案 2 :(得分:0)

查看Conditions - condition任务。