gpt4 book ai didi

java - struts属性获取属性

转载 作者:行者123 更新时间:2023-11-28 21:53:26 25 4
gpt4 key购买 nike

我在使用 struts 2.3.3 和 spring 3.2.8 的 webapp 中遇到了一个奇怪的问题。

在我的一个 JSP 中,我试图检索我的操作的一个简单属性:

JSP:

<%@taglib prefix="s" uri="/struts-tags"%>
<s:property value="getName()" />
<s:property value="name" />

我已经定义了 getter getName()以及我的操作中的属性名称。

当我在 tomcat 7 中部署 webapp 时,有时第一个属性不会显示(完全为空),而第二个属性会正确呈现。我只需要重新启动 tomcat 即可让两者都正常工作。

我怀疑是初始化问题,但我在 tomcat 日志中找不到任何内容。我什至试图从 tomcat 文件夹中删除预编译的 jsps 以强制重新编译。

过去有人遇到过类似的问题吗?

我在 struts 文档上看到他们通常使用第二种方法来访问 action 属性

<s:property value="name" />

我将尝试将所有调用移至此方法,但我想知道为什么有时这两种方法都有效,有时第一个方法失败...

更新:

这是操作代码:

public abstract AbstractAction extends ActionSupport implements ServletRequestAware, ServletResponseAware {
@Autowired
private PublisherComponent publisherComponent;

private String name;

/* ... */

public String getName() {
return publisherComponent.getPublisher().getName();
}
}

我所有的 Action 都是AbstractAction的子类.

名称属性不在操作本身内部使用,仅在 JSP 中使用。

publisherComponent.getPublisher()从 MySQL 检索到“Publisher”实例,DAO 函数正常工作(单元测试成功并且 <s:property value="name" /> 也返回正确的名称值)。

最佳答案

如果您使用 <s:property>标记,那么只有当您只使用属性名称而不使用 getter 或 setter 方法时,它才会起作用。在内部它使用 getter 方法来映射您的属性值。所以第二个<s:property value="name" />正确实现。始终遵循这种方法。

关于java - struts属性获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27225059/

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