[英]How to convert Bean to Object and how to retrieve Bean from Object in Java
我有以下 bean 文件。我想把这个 bean 放到Map<String, Object>
作为bean
的键。
Bean.java
@SuppressWarnings("serial")
public class bean implements Serializable {
@Getter @Setter
private param
}
BaseAction.java
public class BaseAction extends ActionSupport implements SessionAware {
// session
@Getter @Setter
protected Map<String, Object> session;
public execute(){
session.put("loginUser", "userA");
session.put("bean", bean);
session.get("bean");
}
}
执行上面的 setter 之后,我通过下面的 getter 检索这个Bean
。 似乎session.get("bean")
似乎被视为Object
。 并捕获了一些错误,因此我们无法使用bean
的 setter 和 getter。
@Getter @Setter
private Bean bean= new Bean();
setBean(session.get("bean"))
method setBean(Bean) is not applicable for the arguments(Object)
有什么好的方法可以将bean
放入Map<String, Object>
吗?
您可以尝试将 session.get("bean") 的类型转换为 Bean。 像这样:
setBean((Bean)session.get("bean"))
会话Map
实现为Map<String, Object>
,您需要至少将类型保留到SessionAware
接口的 setter 方法。
您可以使用 Struts 类型转换将您放入会话中的任何对象转换为不同的类型。 由于您从操作上下文中注入了一个会话对象,因此它通过视图层上的 OGNL 获取对象并将其放入#session
。 它使用对象的属性访问器来获取它的值。 您仍然在 Struts 标记属性中将值保留为Object
。
如果您知道放入会话中的对象的实例类型,那么您始终可以从请求的参数将字符串值转换为这种类型。 无需显式类型转换为实例类型。
以下代码将与上面的代码相同。
@Getter @Setter
private Object bean= new Bean();
setBean(session.get("bean"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.