Java Struts2验证条件

Java Struts2验证条件,java,validation,struts2,conditional,Java,Validation,Struts2,Conditional,例如,我有一个带有5个“name”字段的表单,它们表示一个字符串选项卡 obj.props[0].name obj.props[1].name obj.props[2].name obj.props[3].name obj.props[4].name 但是,如果这些字段已填充,则它们必须是不同的。所以我做了一个xml验证器。我试过这样的方法: <validator type="expression"> <param name="expression">!obj.

例如,我有一个带有5个“name”字段的表单,它们表示一个字符串选项卡

obj.props[0].name
obj.props[1].name
obj.props[2].name
obj.props[3].name
obj.props[4].name
但是,如果这些字段已填充,则它们必须是不同的。所以我做了一个xml验证器。我试过这样的方法:

<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>

!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)。。。
但它不起作用。您知道struts2验证中如何使用条件吗?

尝试以下方法:

行动类

@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"));
    }
}
@覆盖
public void validate(){
列表=新的ArrayList();
//用于:
//i.Props[]:obj.getProps()[i].getName()
//ii.列表:obj.getProps().get(i).getName()
//1.名称是必填字段(带requiredstring验证器)
//foreach(){
//添加(obj.getProps[i].getName().trim());
// }
//2.名称是非必填字段
//foreach(){
//String name=obj.getProps[i].getName().trim();
//如果(!name.isEmpty())
//列表。添加(名称);
// }
Set Set=新哈希集(列表);
if(set.size()
尝试以下方法:

行动类

@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"));
    }
}
@覆盖
public void validate(){
列表=新的ArrayList();
//用于:
//i.Props[]:obj.getProps()[i].getName()
//ii.列表:obj.getProps().get(i).getName()
//1.名称是必填字段(带requiredstring验证器)
//foreach(){
//添加(obj.getProps[i].getName().trim());
// }
//2.名称是非必填字段
//foreach(){
//String name=obj.getProps[i].getName().trim();
//如果(!name.isEmpty())
//列表。添加(名称);
// }
Set Set=新哈希集(列表);
if(set.size()
+1用于显示验证方法。在这里提出验证问题的许多人直接使用XML方法。+1表示验证方法。许多在这里提出验证问题的人直接使用XML方法。