Struts2 验证条件

发布于 2024-11-29 15:50:47 字数 641 浏览 1 评论 0原文

我有一个包含 5 个“名称”字段的表单,它们代表一个字符串选项卡,

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 验证中如何使用条件吗?

I have a form with 5 "name" fields which represent a String tab, example

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

but these fields, if they are filled, must be different. So i made an xml validator. i tried something like that:

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

but it doesn't work. do you have any idea about how conditions are used in struts2 validation ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吾家有女初长成 2024-12-06 15:50:47

尝试类似:

动作类

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

Try something like :

action class

@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"));
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文