gpt4 book ai didi

java - 我可以使用 OGNL 动态创建对象和设置属性吗?

转载 作者:行者123 更新时间:2023-11-30 11:34:48 33 4
gpt4 key购买 nike

我正在开发一个系统,用于将接收到的结构化消息动态映射到 Java 对象。目前我正在通过 XML 模式执行此操作,该模式具有以下典型格式:

<mapping>
<domainObject>company.app.MyObject</domainObject>
<attribute>
<domainAttribute>myAttr</domainAttribute>
<messageAttribute>root/config/component/param1</messageAttribute>
</attribute>
</mapping>

因此接收到的消息具有层次结构,映射到特定的域对象属性。因此,对于上述内容,我将消息元素 root/config/component/param1 映射到域属性 MyObject.myAttr

我已经开发了代码来执行此操作,但在阅读了有关 Struts2 及其对 OGNL 的使用之后,它似乎在做同样的事情。 我的问题是,OGNL 能否动态构造必要的对象,然后填充所有必要的属性?如果是这样,那是怎么做到的? 从阅读 API 文档来看,您似乎必须自己构建对象。例如,如果我使用这样的 OGNL 表达式

rootObj.childObj.param1

理想情况下,我希望 OGNL 服务构建对象 rootObj,然后是 childObj,然后设置属性 param1。这正是 Struts 将 Http 请求参数传输到域对象所做的,因此动态对象创建必须发生在某个地方。然而,在对 OGNL 表达式进行一些试验后,没有对象创建发生,并且我得到空对象异常。

最佳答案

OGNL 不会构建您的对象。它主要用于并最终用于计算表达式。创建对象是您或使用框架的责任 ObjectFactory创建对象。

关于java - 我可以使用 OGNL 动态创建对象和设置属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15452512/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com