为什么<s:property>标签无法访问Struts 2中的抽象父类成员

问题描述 投票:0回答:1

我在通过 Struts 访问属性时遇到问题。我想知道是否有人对 Struts 比较有经验,可以给我一些指导?

Java 类大致设置如下:

public abstract class parent{
    protected Integer id;

    public Integer getId(){
        return this.id;
    }
}

public class child extends parent{
    // stuff
}

子级是一个动作类中的列表,并设置了 getter:

private List<child> childList;

这是我在前端的代码,试图获取

id
属性:

<s:iterator value="childList" status="cStatus">
    <s:property value='id' />
</s:iterator>

但是,什么也没有出现。我已经从子类中获取了其他成员,所以我假设父成员存在问题,我正在获取抽象类中的成员?

更新:

我尝试获取 JSP 中抽象类中的另一个属性,效果很好。我抢到的另一处财产是

creationDate
。我还向
id
getter 添加了断点,它可以正常访问并返回非空值。以下是包含 Hibernate 注释的父级的更详细实现:

@MappedSuperclass
public abstract class parent{
    protected Integer id;
    protected Date creationDate;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @DocumentId
    public Integer getId() {
        return this.id;
    }
    
    protected void setId(Integer id) {
        this.id = id;
    }
    
    @Column(updatable=false, nullable=false)
    @Temporal(TemporalType.TIMESTAMP)
    public Date getCreationDate() {
        return this.creationDate;
    }
    
    @SuppressWarnings("unused")
    private void setCreationDate(Date creationDate) {
        this.creationDate = creationDate;
    }
}
java hibernate jsp struts2 ognl
1个回答
2
投票

问题出在

private List<child> childList;

需要

private List<child> childList = new ArrayList<>();
public List<child> getChildList(){
  return childList;
}

在 JSP 中

<s:iterator value="childList" status="cStatus">
    <s:property value="id" />
</s:iterator>
© www.soinside.com 2019 - 2024. All rights reserved.