首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >struts属性get属性

struts属性get属性
EN

Stack Overflow用户
提问于 2014-12-01 09:16:08
回答 1查看 1.1K关注 0票数 3

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

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

JSP:

代码语言:javascript
复制
<%@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属性

代码语言:javascript
复制
<s:property value="name" />

我会尝试将我所有的调用转移到这个方法,但我想知道为什么有时这两种方法都有效,而有时第一种方法失败了……

UPD:

以下是操作代码:

代码语言:javascript
复制
public abstract AbstractAction extends ActionSupport implements ServletRequestAware, ServletResponseAware {
    @Autowired
    private PublisherComponent publisherComponent;

    private String name;

    /* ... */

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

我的所有操作都是AbstractAction的子类。

name属性不在操作本身中使用,只在JSP中使用。

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

EN

回答 1

Stack Overflow用户

发布于 2015-04-10 11:19:54

如果您使用的是<s:property>标记,那么只有当您只使用属性名称,而不是getter或定居者方法时,它才能工作。在内部,它使用getter方法映射您的属性值。因此,正确地实现了第二个<s:property value="name" />。始终遵循这个方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27225059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档