Struts2 условие проверки - PullRequest
       9

Struts2 условие проверки

1 голос
/ 16 августа 2011

У меня есть форма с 5 полями "name", которые представляют вкладку String, например

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>

, но это не работает.Есть ли у вас какие-либо идеи о том, как используются условия при проверке struts2?

1 Ответ

5 голосов
/ 16 августа 2011

Попробуйте что-то вроде:

класс действия

@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"));
    }
}
...