java – 当所选选项具有空值时,将嵌套对象设置为null
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 当所选选项具有空值时,将嵌套对象设置为null,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1938字,纯文字阅读大概需要3分钟。
内容图文
![java – 当所选选项具有空值时,将嵌套对象设置为null](/upload/InfoBanner/zyjiaocheng/768/ab34c84ae682481fa76e0f158174b3e6.jpg)
我有一个用于模拟用户的类,另一个用于模拟他的国家.像这样的东西:
public class User{
private Country country;
//other attributes and getter/setters
}
public class Country{
private Integer id;
private String name;
//other attributes and getter/setters
}
我有一个弹簧表单,我有一个组合框,所以用户可以选择他的国家或可以选择未定义的选项,以表明他不想提供这些信息.所以我有这样的事情:
<form:select path="country">
<form:option value="">-Select one-</form:option>
<form:options items="${countries}" itemLabel="name" itemValue="id"/>
</form:select>
在我的控制器中,我获得了带有用户信息的自动填充对象,并且我希望在选择“-Select one-”选项时将country设置为null.所以我用这样的自定义编辑器设置了一个initBinder:
@InitBinder
protected void initBinder(WebDataBinder binder) throws ServletException {
binder.registerCustomEditor(Country.class, "country", new CustomCountryEditor());
}
我的编辑做了这样的事情:
public class CustomCountryEditor(){
@Override
public String getAsText() {
//I return the Id of the country
}
@Override
public void setAsText(String str) {
//I search in the database for a country with id = new Integer(str)
//and set country to that value
//or I set country to null in case str == null
}
}
当我提交表单时,它是有效的,因为当我选择时,我将国家/地区设置为null
“ – 选择一个 – ”选项或所选国家/地区的实例.问题是,当我加载表单时,我有一个像下面这样的方法来加载用户信息.
@ModelAttribute("user")
public User getUser(){
//loads user from database
}
我从getUser()获取的对象将国家/地区设置为特定国家/地区(不是空值),但在组合框中未选择任何选项.我调试了应用程序,CustomCountryEditor在设置和获取文本时效果很好,但是对于“国家/地区”字段中的每个项目都调用了“asAsxt”方法.
任何的想法?
当我在组合框中选择无国家选项时,有没有更好的方法来设置国家/地区对象?
谢谢
解决方法:
问题是我从Spring Security主体对象中检索对象User.我已经改变了我的getUser方法,所以我从Spring Security获得Id,我在数据库中搜索,现在一切正常,但我不明白为什么会发生这种情况,因为我可以在调试中看到国家是由Spring加载的安全.
内容总结
以上是互联网集市为您收集整理的java – 当所选选项具有空值时,将嵌套对象设置为null全部内容,希望文章能够帮你解决java – 当所选选项具有空值时,将嵌套对象设置为null所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。