如何解决批量分配:Java中不安全的活页夹配置(API滥用,结构化)
我有一个Controller类,其中包含以下两种查找医生的方法(上下文已更改)。获取 两种方法上的
错误。
@Controller@RequestMapping(value = "/findDocSearch")
public class Controller {
@Autowired
private IFindDocService findDocService;
@RequestMapping(value = "/byName", method = RequestMethod.GET)
@ResponseBody
public List<FindDocDTO> findDocByName(FindDocBean bean) {
return findDocService.retrieveDocByName(bean.getName());
}
@RequestMapping(value = "/byLoc", method = RequestMethod.GET)
@ResponseBody
public List<FindDocDTO> findDocByLocation(FindDocBean bean) {
return findDocService.retrieveDocByZipCode(bean.getZipcode(),
bean.getDistance());
}
}
我的豆是:
public class FindDocBean implements Serializable { private static final long serialVersionUID = -1212xxxL;
private String name;
private String zipcode;
private int distance;
@Override
public String toString() {
return String.format("FindDocBean[name: %s, zipcode:%s, distance:%s]",
name, zipcode, distance);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public int getDistance() {
return distance;
}
public void setDistance(int distance) {
this.distance = distance;
}
根据到目前为止发现的所有建议,它们建议仅通过以下类似的方式限制具有必需参数的bean:
final String[] DISALLOWED_FIELDS = new String[]{"bean.name", "bean.zipcode", };@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setDisallowedFields(DISALLOWED_FIELDS);
但是我的问题是,在Controller上提供的任何一种方法中都将使用bean的所有3个参数。
有人可以为此提出一些解决方案吗?提前致谢。
回答:
InitBinder可以用于方法。你可以试试看
@InitBinder("findDocByName")public void initBinderByName(WebDataBinder binder) {
binder.setDisallowedFields(new String[]{"distance","zipcode"});
}
@InitBinder("findDocByLocation")
public void initBinderByZipCode(WebDataBinder binder) {
binder.setDisallowedFields(new String[]{"distance","name"});
}
以上是 如何解决批量分配:Java中不安全的活页夹配置(API滥用,结构化) 的全部内容, 来源链接: utcz.com/qa/407516.html