2

Hibernate3.0とStrutsを使用しています。@GeneratedValueIDの生成に使用しています。

顧客の詳細を保存するときに1つの顧客画面がありますcustomerId。そのIDのみに基づいて、2番目のページの詳細を保存するため、新しく挿入された次の画面に移動します。

そのために私は

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

保存してStruts2を使用した後、顧客オブジェクトの値を取得します。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は、アクションクラスでsource -pageを使用して指定されたセッターを使用して値をマップしようとしましたが、値の設定に失敗し警告が発生することがありました。

警告を抑制するためにパラメータを明示的に割り当ててみることができます:

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

例外はそれを言います

そのようなプロパティを持たないオブジェクトからプロパティを抽出しようとすると、例外がスローされます

これは、JavaBeanプロパティが必要であることを意味しますapplicationId。ゲッターとセッターをフィールドに配置すると、問題が解決するはずです。

Hibernateを使用してIDを挿入するためのより良い方法について

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