我的表单包含 6 个字段:fName、lName、mName、age、sex、sal
我们不能指望用户会完成所有的输入。有时他只完成 3 个输入,有时 4 个,有时只完成 1 个,有时全部,我们无法预测。
我有一个具有所有 6 个属性值的员工 bean。
我想使用来自用户的所有给定输入来搜索这个员工 bean。这意味着我需要动态识别用于比较的 getter。如果用户只给出了 3 个输入,那么我只需要使用各自的 getter 进行比较。
我的表单包含 6 个字段:fName、lName、mName、age、sex、sal
我们不能指望用户会完成所有的输入。有时他只完成 3 个输入,有时 4 个,有时只完成 1 个,有时全部,我们无法预测。
我有一个具有所有 6 个属性值的员工 bean。
我想使用来自用户的所有给定输入来搜索这个员工 bean。这意味着我需要动态识别用于比较的 getter。如果用户只给出了 3 个输入,那么我只需要使用各自的 getter 进行比较。
您可以使用反射。例如,如果您的用户提供了年龄和性别,您应该调用它们getAge()
并将getSex()
它们与给定值进行比较。要编写 getter 名称,请使用如下代码:
String getterName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
现在你可以调用它了:
String value = String.valueOf(Person.getCalss().getMethod(getterName).invoke(person));
现在只需将其与给定值进行比较。
您还可以使用为您简化 bean 访问的库。例如来自 jakarta 项目的BeanUtils 。
您可以使用 Hamcrest Matchers 之类的东西。例如:
String MATCH_ANY = "matchany83102176193580";
...
if (mName.equals(search.mName) || mName.equals(MATCH_ANY))