在 Java 中,我可以访问类的 Transient 字段的值。但是,我不访问 JSP 上的相同字段。我怎样才能使它们对 JSP 可用?
我正在使用 Hibernate 检索值,我认为对此的解决方案是使用 Transformers.aliasToBean 选项,但还有其他解决方案吗?
有没有办法摆脱 transient 注解,但在 Hibernate 中有相同的映射?那样的话,问题就迎刃而解了。
@AssociationOverrides({
@AssociationOverride(name = "tta.names", joinColumns = @JoinColumn(name = "id"))})
public class Names implements java.io.Serializable {
private static final long serialVersionUID = -30956546435023625398L;
@EmbeddedId
private TableToAssociate tta = new TableToAssociate();
@Transient
public String getid() {
return tta.getMyIds().getId();
}
public void setid(String id) {
this.tta.getMyIds().setId(id);
}
在 Java 中,我可以使用以下代码访问它们
System.out.println(mystudents.getNames().iterator().next().getId());
在 JSP 中,我无法访问它们!
<c:forEach var="nm"items="${mystudents.names}">
${nm.id}
</c:forEach>
如果我输入另一个不是 transient 的名称字段,JSP 会成功显示该项目的值。
最佳答案
尝试重命名方法以匹配 JavaBean 规范。
代替:
@Transient
public String getid() {
return tta.getMyIds().getId();
}
public void setid(String id) {
this.tta.getMyIds().setId(id);
}
你应该有:
@Transient
public String getId() {
return tta.getMyIds().getId();
}
public void setId(String id) {
this.tta.getMyIds().setId(id);
}
关于java - 由于 Hibernate Mapping 需要将某些字段作为 @Transient 但 JSP 无法访问它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29666687/