- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想将表单数据直接转换为bean。最初我使用 spring 来实现这一点,但在我当前的项目中,我们不允许再使用 spring,所以我尝试在 Apache BeanUtils 的帮助下做类似的事情。我的 bean 看起来像这样:
public class MyBean {
private String foo;
private String bar;
private List<FooBar> fooBars;
}
public class FooBar {
private int id;
}
提交表单后,request.getParameterMap() 方法会给出以下 map :
"foo" : "Some text",
"bar" : "Other text",
"foobars[0].id" : "1",
"foobars[1].id" : "2",
"foobars[2].id" : "3"
我用于转换的代码如下所示:
MyBean bean = new MyBean();
BeanUtils.populate(bean, request.getParameterMap());
使用 Spring Data Binder,将这些值转换为 bean 是没有问题的,但点符号在某种程度上不适用于 BeanUtils。有谁知道输入必须是什么样子,以便 BeanUtils 可以将 foobars 转换为对象列表?或者也许您知道另一个有能力实现这一点的库?
最佳答案
BeanUtils.populate
似乎不支持嵌套属性:
This method uses Java reflection APIs to identify corresponding "property setter" method names, and deals with setter arguments of type String, boolean, int, long, float, and double. In addition, array setters for these types (or the corresponding primitive types) can also be identified.
我找到了另一个方法,BeanUtils.copyProperties
,这里指定的是
If the origin "bean" is actually a Map, it is assumed to contain String-valued simple property names as the keys.
所以我猜你无法使用 BeanUtils 来做到这一点。但我可能有一个解决方案,使用PropertyUtils。该类有很多静态方法,其中有:
我还没有尝试过,但这是一种可能的方法:
MyBean bean = new MyBean();
for (Map.Entry<String, String> entry : request.getParameterMap())
{
try {
PropertyUtils.setProperty(bean, entry.getKey(), entry.getValue());
}
catch (NoSuchMethodException exc) {
PropertyUtils.setNestedProperty(bean, entry.getKey(), entry.getValue());
}
}
我不知道从String
到Integer
的转换是否是自动的。让我知道。
关于java - 将 request.getParameterMap() 转换为带有对象列表的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54571788/
我正在尝试从请求对象获取完整的参数映射并对其进行迭代。 这里是示例代码 Map map = request.getParameterMap(); for(Object key : map.keyS
HttpServletRequest 的 getParameterMap() 返回查询参数和发布的表单数据。 我可以从 UriInfo.getQueryParameters() 单独获取查询参数。 但
HTTPServletRequest req,有一个方法getParameterMap(),但是,值返回一个String[]而不是String,发布数据为 name=Marry&lastName=Jo
HandshakeRequest 的方法getParameterMap 是否包含路径参数?我似乎找不到关于此的详细文档。 最佳答案 HandShakeRequest#getParameterMap()
我有一个 java servlet 应用程序,我们正在将其从 WebSphere 移植到 TC Server 并从 java 2 升级到 java 7。 在测试中,我们发现以 % 符号结尾的参数(包括
下面是我用来测试的代码: 我们正在做的是使用 getPageContext().getRequest().getParameterMap(
为什么参数值是Object哈希码: input_name:[[Ljava.lang.String;@3f4d64] 我认为代码 request.getParameterMap().get(name);
我有一个 JSP,可以从像这样的 url 访问 http://localhost/products.jsp (因此没有查询字符串),而该页面包含其他 JSP: 在 product.jsp
我正在使用 FilterInvocationSecurityMetadataSource 实现类实现 configure(HTTP HttpSecurity) 中请求的角色动态验证方法,但是,我遇到了
我要转换Map到 Bean与 getter 和 setter。有没有一个图书馆可以做到这一点?如果没有的话怎么办? 我的想法是这样的: public Object convert(final Map
我想将表单数据直接转换为bean。最初我使用 spring 来实现这一点,但在我当前的项目中,我们不允许再使用 spring,所以我尝试在 Apache BeanUtils 的帮助下做类似的事情。我的
今天我想给大家提出的问题是这样的: 请求到达 Controller (在 spring MVC 环境中),在该 Controller 中我想以某种方式拆分请求参数。我最初的方法是使用@ModelAtt
谁能解释一下为什么 ServletRequest.getParameterMap() 返回类型 Map ServletRequest.getParameter() 只返回类型 String 我不明白为
我是一名优秀的程序员,十分优秀!