java - Struts2 验证条件

标签 java validation struts2 conditional-statements

我有一个表单,其中包含 5 个“名称”字段,代表一个字符串选项卡,示例

obj.props[0].name
obj.props[1].name
obj.props[2].name
obj.props[3].name
obj.props[4].name

但是这些字段,如果都填了,肯定是不同的。所以我做了一个 xml validator 。我试过类似的东西:

<validator type="expression">
    <param name="expression">!obj.props[0].name.equals(obj.props[1].name) || 
    !obj.props[0].name.equals(obj.props[2].name) || 
    !obj.props[0].name.equals(obj.props[3].name) || 
    !obj.props[0].name.equals(obj.props[4].name)...</param>
    <message key="create.obj.error.propsdiff" />
    </validator>

但它不起作用。您知道在 struts2 验证中如何使用条件吗?

最佳答案

尝试类似的东西:

Action 类

@Override
public void validate() {

    List<String> list = new ArrayList<String>();

    // For : 
    //  i. Props[]     : obj.getProps()[i].getName()
    // ii. List<Props> : obj.getProps().get(i).getName()

    // 1. names is mandatory fields (with requiredstring validator)
    // foreach () {
    //      list.add(obj.getProps[i].getName().trim());
    // }

    // 2. names is non-mandatory fields
    // foreach () {
    //      String name = obj.getProps[i].getName().trim();
    //      if(!name.isEmpty())
    //          list.add(name);
    // }

    Set<String> set = new HashSet<String>(list);

    if (set.size() < list.size()) {
        addActionError(getText("create.obj.error.propsdiff"));
    }
}

关于java - Struts2 验证条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7076009/

相关文章:

java - 从 Struts2 表单提交填充集合

java - Firefox 检测到服务器正在以一种永远不会完成的方式重定向对此地址的请求

java - Java Streams 是迭代器设计模式的实现吗?

java - IBM Appscan 安全漏洞 SQL 注入(inject)

html - <span> 里面的 <h> 标签,验证错误

asp.net - Asp.Net 中的正则表达式

java - 如何将一个JSP包含在另一个JSP中?

java - Bean Validation 如何不重复注解?

javascript - 使用 knockout 验证时,在 ko.foreach 内绑定(bind)时 isValid 报告不正确

java - 支柱2 : Displays table of Songs - null gets printed