2

我正在使用 Hibernate 3.0 和 Struts。我正在使用@GeneratedValueid 生成。

当我保存客户详细信息时,我有一个客户屏幕我想移动到新插入的下一个屏幕,customerId因为仅基于该 ID 我将保存第二页详细信息

为此我正在使用

someDAO.save(customer);
customerId = customer.getCustomerId();

保存并使用 Struts 2 后,我获得了客户对象值,redirectAction我将其转发customerId到第二页,它工作正常,但我在控制台上收到警告

Caught OgnlException while setting property 'applicationId' on type 'org.apache.struts2.dispatcher.ServletActionRedirectResult'.
ognl.NoSuchPropertyException: org.apache.struts2.dispatcher.ServletActionRedirectResult.applicationId
    at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:132)
    at com.opensymphony.xwork2.util.OgnlValueStack$ObjectAccessor.setProperty(OgnlValueStack.java:68)
    at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1656)
    at ognl.ASTProperty.setValueBody(ASTProperty.java:101)
    at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
    at ognl.SimpleNode.setValue(SimpleNode.java:246)
4

2 回答 2

2

最好的方法你可以忽略这个,

但是, redirectAction使用ActionMapperFactory提供的ActionMapper将浏览器重定向到调用指定操作和(可选)命名空间的 URL 。OGNL 尝试使用在源页面上指定的值设置地图 html 元素,并将这些值推送到 valuestack中。有时OGNL尝试使用在源页面中指定的操作类中指定的设置器映射值,但未能设置值并导致警告

您可以尝试显式分配参数以抑制警告:

<result name="showReportResult" type="redirectAction">
     <param name="applicationId">${applicationId}</param>
 </result>
于 2013-03-08T07:39:17.733 回答
1

The exception says that

Exception thrown if a property is attempted to be extracted from an object that does not have such a property

This means that you need to the Java bean property applicationId. Putting getters and setters on the field should solve the issue.

About better way to insert the id with hibernate use

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id", nullable = false)
public Long getId() {
    return id;
}
于 2013-03-08T11:00:21.707 回答