我有一个表单,其中包含 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/