在使用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" />我会尝试将我所有的调用转移到这个方法,但我想知道为什么有时这两种方法都有效,而有时第一种方法失败了……
UPD:
以下是操作代码:
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" />也返回正确的名称值)。
发布于 2015-04-10 11:19:54
如果您使用的是<s:property>标记,那么只有当您只使用属性名称,而不是getter或定居者方法时,它才能工作。在内部,它使用getter方法映射您的属性值。因此,正确地实现了第二个<s:property value="name" />。始终遵循这个方法。
https://stackoverflow.com/questions/27225059
复制相似问题