繁体   English   中英

如何将 Bean 转换为对象以及如何在 Java 中从对象中检索 Bean

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM